|
|
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 7Without the context information, it may be difficult to figure out what the error refers to.