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


Комментарии в 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 и условная компиляция. Дополнительные сведения см. в статье Preprocessor Directives (Директивы препроцессора) в справочника по препроцессору.

Блок, относящийся только к системам Майкрософт

Компилятор Microsoft также поддерживает однострочные комментарии, перед которыми ставятся две косые черты (//). Эти комментарии не могут расшириться на вторую строку.

// This is a valid comment

Комментарии, начинающиеся с двух косых черт (//) завершаются следующим символом новой строки, который не предшествует escape-символу. В следующем примере символу новой строки предшествует обратная косая черта (\), создается escape-последовательность. Эта escape-последовательность заставляет компилятор обрабатывать следующую строку как часть предыдущей строки. Дополнительные сведения см. в статье Escape Sequences (Escape-последовательности).

// my comment \
    i++;

Поэтому оператор i++; скрыт комментарием.

В Microsoft C расширения Microsoft по умолчанию включены. Отключить их можно при помощи параметра /Za.

Завершение блока, относящегося только к системам Майкрософт

См. также

Токены C