Поделиться через


Комментарии в 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

См. также

Ссылки

Токены C