В стандарте С89 определены комментарии только одного вида; такой комментарий начинается с символов /* и заканчивается символами */. Между звездочкой и слешем не должно быть никаких пробелов. Любой текст, расположенный между начальными и конечными символами комментария, компилятором игнорируется. Например, следующая программа только выведет на экран Привет:
#include <stdio.h> int main(void) { printf("Привет"); /* printf("всем"); */ return 0; }
Комментарий такого вида называется многострочным комментарием (multiline comment), потому что его текст может располагаться в нескольких строках. Например,
/* это многострочный комментарий */
Комментарии могут находиться в любом месте программы, за исключением середины ключевого слова или идентификатора. Приведенный ниже комментарий правильный:
x = 10+ /* прибавлять числа */5;
а комментарий
swi/* такое работать не будет */tch(c) { ...
не является допустимым, потому что комментарий не может разрывать ключевое слово. Впрочем, комментарии обычно не следует размещать и в середине выражений, потому что так труднее разобраться и с выражениями, и с самими комментариями.
Многострочные комментарии не могут быть вложенными. То есть в одном комментарии не может находиться другой. Например, при компиляции следующего фрагмента кода будет обнаружена ошибка:
/* Это внешний комментарий x = y/a; /* а это внутренний комментарий, обнаружив который, компилятор выдаст сообщение об ошибке */ */
В С99 (да и в C++) поддерживается два вида комментариев. Первым из них является /* */, или многострочный комментарий, о котором только что говорилось. А вторым — однострочный комментарий. Такой комментарий начинается с символов // и заканчивается в конце строки. Например:
// это однострочный комментарий
Однострочные комментарии особенно полезны тогда, когда нужны краткие, не более чем в одну строку пояснения. Хотя версия С89 такие комментарии официально не поддерживает, зато их признает большинство компиляторов С.
Однострочный комментарий может находиться внутри многострочного комментария. Например, следующий комментарий является вполне допустимым:
/* это // проверка вложенных комментариев */
Комментарии должны находиться там, где требуется объяснить работу кода. Например, в начале всех функций, за исключением самых очевидных, должен быть комментарий, который сообщает, что именно делает функция, как она вызывается и что возвращает.