◐ Shell
clean mode source ↗

Comments - cppreference.com

From cppreference.com

Comments serve as a sort of in-code documentation. When inserted into a program, they are effectively ignored by the compiler; they are solely intended to be used as notes by the humans that read source code. Although specific documentation is not part of the C++ standard, several utilities exist that parse comments with different documentation formats.

Syntax

/* multi-line-content */ (1)
// single-line-content (2)

1) Often known as “C-style” or “multi-line” comments.

2) Often known as “C++-style” or “single-line” comments.

multi-line-content - A character sequence which does not contain the character sequence */
single-line-content - A character sequence which does not contain any new line character

All comments are removed from the program at translation phase 3 by replacing each comment with a single whitespace character.

C-style

C-style comments are usually used to comment large blocks of text, however, they can be used to comment single lines. To insert a C-style comment, simply surround text with /* and */; this will cause the contents of the comment to be ignored by the compiler.

C-style comments cannot be nested:

/************************
/* Comment ends here -> */
 ************************/ // <- Not part of comment

C++-style

C++-style comments are usually used to comment single lines. However, multiple C++-style comments can be placed together to form multi-line comments. C++-style comments tell the compiler to ignore all content between // and a new line.

Notes

Although it is not part of the C++ standard, /** and */ are often used to indicate documentation blocks. This is legal because the second asterisk is simply treated as part of the comment.

Because comments are removed before the preprocessor stage, a macro cannot be used to form a comment and an unterminated C-style comment doesn't spill over from an #include'd file.

Besides commenting out, other mechanisms used for source code exclusion are

#if 0
    std::cout << "this will not be executed or even compiled\n";
#endif

and

if (false)
{
    std::cout << "this will not be executed\n";
}

Example

#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;
}

Output:

Defect reports

The following behavior-changing defect reports were applied retroactively to previously published C++ standards.

DR Applied to Behavior as published Correct behavior
P2843R3 C++98 if single-line-content contains a form-feed or a vertical-tab
character, only whitespace characters are allowed till the end
remove the
restriction

See also