A comment is text that the compiler ignores but that is useful for programmers. Comments are normally used to annotate code for future reference. The compiler treats them as white space. You can use comments in testing to make certain lines of code inactive; however, #if/#endif preprocessor directives work better for this because you can surround code that contains comments but you cannot nest comments.
A C++ comment is written in one of the following ways:
/*
(slash, asterisk) characters, followed by any sequence of characters (including new lines), followed by the */
characters. This syntax is the same as ANSI C.//
(two slashes) characters, followed by any sequence of characters. A new line not immediately preceded by a backslash terminates this form of comment. Therefore, it is commonly called a “single-line comment.”
The comment characters (/*
, */
, and //
) have no special meaning within a character constant, string literal, or comment. Comments using the first syntax, therefore, cannot be nested. Consider this example:
/* Intent: Comment out this block of code.
Problem: Nested comments on each line of code are illegal.
FileName = String( "hello.dat" ); /* Initialize file string */
cout << "File: " << FileName << "\n"; /* Print status message */
*/
The preceding code will not compile because the compiler scans the input stream from the first /*
to the first */
and considers it a comment. In this case, the first */
occurs at the end of the Initialize file string
comment. The last */
, then, is no longer paired with an opening /*
.
Note that the single-line form (//
) of a comment followed by the line-continuation token (\
) can have surprising effects. Consider this code:
#include <stdio.h>
void main()
{
printf( "This is a number %d", // \
5 );
}
After preprocessing, the preceding code contains errors and appears as follows:
#include <stdio.h>
void main()
{
printf( "This is a number %d",
}