Skip to main content

Documentation Index

Fetch the complete documentation index at: https://docs.syntblaze.com/llms.txt

Use this file to discover all available pages before exploring further.

A multi-line comment in C++ is a lexical construct that instructs the compiler to ignore a sequence of characters spanning one or more lines. During the lexical analysis phase, the C++ preprocessor replaces the entire comment block with a single whitespace character, effectively stripping it from the translation unit before compilation.

Syntax

Multi-line comments are enclosed by a starting /* token and a terminating */ token. Every character between these two delimiters is ignored by the compiler.
/*
   This text is ignored by the compiler.
   It can span an arbitrary number of lines.
*/

Lexical Rules and Behavior

1. Inline Placement Because multi-line comments have explicit termination tokens, they can be placed inline within a single statement. They are valid anywhere a whitespace character is valid, provided they do not split a single language token (such as an identifier or a keyword).
int x = 10 /* initialization */ + 20;
2. No Nesting Standard C++ does not support nested multi-line comments. The lexical scanner operates sequentially and terminates the comment block at the very first */ sequence it encounters, regardless of how many /* sequences preceded it. Attempting to nest these comments leaves trailing text exposed to the compiler.
/* Outer comment starts
   /* Inner comment starts */ 
// The comment block is now closed. 
// The following characters would cause a syntax error if not commented out:
// */
3. Interaction with Single-line Comments The C++ tokenizer processes comment initiators based on whichever appears first. If a multi-line comment initiator (/*) appears after a single-line comment initiator (//) on the same line, it is treated as standard text within the single-line comment and does not begin a multi-line comment block. Conversely, a // sequence inside a /* ... */ block has no special meaning and is ignored.
// This is a single-line comment containing /*
int y = 5; // The multi-line comment was never started.

/* 
   This is a multi-line comment.
   // This does not start a single-line comment.
*/
4. String Literal Exception The compiler’s tokenizer prioritizes string and character literals. If the /* or */ sequences appear within double quotes (" ") or single quotes (' '), they are evaluated as standard character data rather than comment delimiters.
const char* str = "This is not a /* comment */";
5. Line Splicing If a multi-line comment delimiter is split using a line-continuation character (a backslash \ immediately followed by a newline), the preprocessor will splice the lines together before tokenization, successfully forming the comment delimiter.
/\
* 
  This is a valid multi-line comment due to line splicing.
*\
/
Master C++ with Deep Grasping Methodology!Learn More