Комментарии в C
Комментарий — это последовательность символов, которая начинается с косой черты и звездочки (/*) и рассматривается компилятором как один пробельный символ, а во всем остальном игнорируется. Комментарии могут включать любое сочетание символов из представимого набора символов, включая символы новой строки, но не включая разделитель конца комментария (*/). Комментарии могут занимать несколько строк, но не могут быть вложенными.
Они могут располагаться в любом месте, где допускается использование пробельных символов. Поскольку компилятор обрабатывает комментарий как один пробельный символ, его невозможно использовать в составе токена. Символы, которые находятся в комментарии, компилятор игнорирует.
Комментарии используются для документирования кода. В следующем примере компилятор принимает комментарий:
/* Comments can contain keywords such as
for and while without generating errors. */
Комментарии в коде могут находиться в той же строке, что и оператор:
printf( "Hello\n" ); /* Comments can go here */
Перед функциями или программными модулями можно вставлять блоки комментариев с описаниями.
/* MATHERR.C illustrates writing an error routine
* for math functions.
*/
Поскольку комментарии не могут содержать вложенные комментарии, то следующий пример вызовет ошибку:
/* Comment out this routine for testing
/* Open file */
fh = _open( "myfile.c", _O_RDONLY );
.
.
.
*/
Причина ошибки в том, что компилятор распознает первое сочетание символов, */, расположенное после слов Open file, как конец комментария. Он пытается обработать оставшийся текст, а обнаружив символы */ за пределами комментария, выдает сообщение об ошибке.
Хотя с помощью комментариев можно скрывать часть кода для тестирования, для этого есть полезная альтернатива: директивы препроцессора #if и #endif и условная компиляция. Дополнительные сведения см. в разделе Директивы препроцессора в Справочнике по препроцессору.
Блок, относящийся только к системам Microsoft
Компилятор Microsoft также поддерживает однострочные комментарии, перед которыми ставятся две косые черты (//). Если компиляция выполняется с параметром /Za (стандарт ANSI), то такие комментарии создают ошибки. Такие комментарии невозможно расширить до второй строки.
// This is a valid comment
Комментарии, которые начинаются с двух косых черт (//), завершаются первым символом новой строки, перед которым не стоит escape-символ. В следующем примере перед символом новой строки стоит обратная косая черта (\), которая создает escape-последовательность. В результате этого следующая строка обрабатывается компилятором как часть текущей строки. (Дополнительные сведения см. в разделе Escape-последовательности.)
// my comment \
i++;
Поэтому оператор i++; скрыт комментарием.
В Microsoft C расширения Microsoft по умолчанию включены. Отключить их можно при помощи параметра /Za.
Завершение блока, относящегося только к системам Microsoft