Комментарии
Комментарии служат своего рода внутрикодовой документацией. Когда они вставляются в программу, компилятор их фактически игнорирует; они предназначены только для использования в качестве заметок людьми, которые читают исходный код.
Синтаксис
/* комментарий */ |
(1) | |
// комментарий |
(2) | (с C99) |
Все комментарии удаляются из программы на стадии трансляции 3 путём замены каждого комментария одним символом пробела.
Комментарии в стиле C
Комментарии в стиле C обычно используются для комментирования больших блоков текста или небольших фрагментов кода; однако они могут использоваться для комментирования отдельных строк. Чтобы вставить текст в качестве комментария в стиле C, просто заключите текст в /* и */. Комментарии в стиле C сообщают компилятору игнорировать всё содержимое между /* и */. Хотя это не часть стандарта C, /** и **/ часто используются для обозначения блоков документации; это законно, потому что второй знак звёздочки просто обрабатывается как часть комментария.
За исключением символьного литерала, строкового литерала или комментария, символы /* вводят комментарий. Содержимое такого комментария проверяется только для идентификации многобайтовых символов и для поиска символов */, которые завершают комментарий. Комментарии в стиле C не могут быть вложены.
Комментарии в стиле C++Комментарии в стиле C++ обычно используются для комментирования отдельных строк текста или кода; однако их можно размещать вместе, чтобы образовать многострочные комментарии. Чтобы вставить текст в качестве комментария в стиле C++, просто поместите перед текстом За исключением символьного литерала, строкового литерала или комментария, символы // y = f(x); // invoke algorithm Комментарий в стиле C может появиться внутри комментария в стиле C++: // y = f(x); /* invoke algorithm */ Комментарий в стиле C++ может появиться внутри комментария в стиле C; это механизм исключения небольшого блока исходного кода: /*
y = f(x); // invoke algorithms
z = g(x);
*/ |
(с C99) |
Примечания
Поскольку комментарии удаляются до стадии предварительной обработки, макрос не может быть использован для создания комментария, а незавершенный комментарий в стиле C не распространяется из файла, включенного с помощью #include.
/* An attempt to use a macro to form a comment. */
/* But, a space replaces characters "//". */
#ifndef DEBUG
#define PRINTF //
#else
#define PRINTF printf
#endif
...
PRINTF("Error in file %s at line %i\n", __FILE__, __LINE__);Помимо комментирования, другие механизмы, используемые для исключения исходного кода, это:
#if 0
puts("this will not be compiled");
/* no conflict with C-style comments */
// no conflict with C++-style comments
#endifи
if(0) {
puts("this will be compiled but not be executed");
/* no conflict with C-style comments */
// no conflict with C++-style comments
}Введение // комментариев в C99 стало изменением, нарушающим работу в некоторых редких случаях:
a = b //*divisor:*/ c
+ d; /* C89 compiles a = b / c + d;
C99 compiles a = b + d; */Пример
#include <stdio.h>
/*
C-style comments can contain
multiple lines.
*/
/* Or, just one line. */
// C++-style comments can comment one line.
// Or, they can
// be strung together.
int main(void)
{
// The below code won't be run
// puts("Hello");
// The below code will be run
puts("World");
// A note regarding backslash + newline.
// Despite belonging to translation phase 2 (vs phase 3 for comments),
// '\' still determines which portion of the source code is considered
// as 'comments':
// This comment will be promoted to the next line \
puts("Won't be run"); // may issue a warning "multi-line comment"
puts("Hello, again");
}Вывод:
World Hello, again
Ссылки
- Стандарт C17 (ISO/IEC 9899:2018):
- 6.4.9 Комментарии (стр: 54)
- Стандарт C11 (ISO/IEC 9899:2011):
- 6.4.9 Комментарии (стр: 75)
- Стандарт C99 (ISO/IEC 9899:1999):
- 6.4.9 Комментарии (стр: 66)
- Стандарт C89/C90 (ISO/IEC 9899:1990):
- 3.1.9 Комментарии
См. также
| Документация C++ по Комментарии |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/w/c/comment