|
|
The diagnostic messages produced by the C++ Compilation System are designed to be self-explanatory. Diagnostic messages have an associated severity:
Diagnostics are written to stderr with a form like the following:
"test.c", line 5: a break statement may only be used within
a loop or switch
break;
^
Note that the message identifies the file and line involved, and that the
source line itself (with position indicated by the caret ``^'') follows the
message. If there are several diagnostics in one source line, each
diagnostic will have the form above, with the result that the text
of the source line will be displayed several times, with an appropriate
position each time.
Long messages are wrapped to additional lines when necessary.
For some messages, a list of entities is useful; they are listed following the initial error message:
"test.c", line 4: error: more than one instance of overloaded
function "f" matches the argument list:
function "f(int)"
function "f(float)"
f(1.5);
^
In some cases, some additional context information is provided; specifically,
such context information is useful when the compiler issues a
diagnostic while doing a template instantiation or while generating a
constructor, destructor, or assignment operator function. For example:
"test.c", line 7: error: "A::A()" is inaccessible
B x;
^
detected during implicit generation of "B::B()"
at line 7
Without the context information, it may be difficult to figure out what the
error refers
to.