Комментарии
Комментарии служат своего рода документацией в коде. При добавлении в программу они фактически игнорируются компилятором; они предназначены исключительно для заметок, которые читают люди, изучающие исходный код. Хотя специальная документация не входит в стандарт C++, существует несколько утилит, которые анализируют комментарии с использованием различных форматов документации.
Синтаксис
/* multi-line-content */ | (1) | |
// single-line-content | (2) |
| multi-line-content | - | Последовательность символов, не содержащая последовательность символов */ |
| single-line-content | - | Последовательность символов, не содержащая символов новой строки |
На этапе трансляции 3 все комментарии удаляются из программы: каждый комментарий заменяется одним пробельным символом.
В стиле C
Комментарии в стиле C обычно используются для комментирования больших блоков текста, однако их можно использовать и для комментирования отдельных строк. Чтобы добавить комментарий в стиле C, просто заключите текст между /* и */; тогда содержимое комментария будет игнорироваться компилятором.
Комментарии в стиле C не могут быть вложенными:
/************************ /* Comment ends here -> */ ************************/ // <- Not part of comment
В стиле C++
Комментарии в стиле C++ обычно используются для комментирования отдельных строк. Однако несколько комментариев в стиле C++ можно расположить подряд, чтобы сформировать многострочный комментарий. Комментарии в стиле C++ указывают компилятору игнорировать всё содержимое между // и символом новой строки.
Примечания
Хотя это и не входит в стандарт C++, /** и */ часто используются для обозначения блоков документации. Это допустимо, поскольку вторая звёздочка просто считается частью комментария.
Поскольку комментарии удаляются до этапа препроцессора, макрос нельзя использовать для создания комментария, а незакрытый комментарий в стиле C не переходит из подключённого файла #include.
Помимо комментирования, для исключения исходного кода используются следующие механизмы:
#if 0
std::cout << "this will not be executed or even compiled\n";
#endif
и
if (false)
{
std::cout << "this will not be executed\n";
}
Пример
#include <iostream>
/* C-style comments can contain
multiple lines */
/* or just one */
/**************
* you can insert any *, but
* you can't make comments nested
*/
// C++-style comments can comment one line
// or, they can
// be strung together
int main()
{
// comments are removed before preprocessing,
// so ABC is "1", not "1//2134", and "1 hello world"
// will be printed
#define ABC 1//2134
std::cout << ABC << " hello world\n";
// The below code won't be run
// return 1;
// The below code will be run
return 0;
}
Вывод:
1 hello world
Отчёты об ошибках
Следующие отчёты об ошибках, изменяющие поведение, были применены задним числом к ранее опубликованным стандартам C++.
| DR | Применяется к | Опубликованное поведение | Правильное поведение |
|---|---|---|---|
| P2843R3 | C++98 | если single-line-content содержит символ перевода страницы или вертикальной табуляции, до конца разрешены только пробельные символы | удалить ограничение |
См. также
| Документация по C для комментариев |
© cppreference.com
Licensed under the Creative Commons Attribution-ShareAlike Unported License v3.0.
https://en.cppreference.com/cpp/comment