在C++中可以提供更好的错误报告吗?

sha*_*oth 0 c++ compiler-construction compiler-errors visual-c++

目前,当我在Visual C++ 10中编译此代码时:

Undeclared var;
Run Code Online (Sandbox Code Playgroud)

编译器发出以下错误消息:

error C2065: 'CUndeclared' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'var'
error C2065: 'var' : undeclared identifier
Run Code Online (Sandbox Code Playgroud)

只有第一个是有用的,其余只增加输出中的噪音.现在我明白,或许产生更漂亮的错误消息并不是编译器开发的首要任务.

我想知道的是 - 是否有可能在C++中有更好的错误报告,或者C++是如此硬核,以至于编译器别无选择,只能报告三个错误?

Jam*_*lis 5

g ++ 4.5.1报告:

Z:\dev>g++ x.cpp
x.cpp:1:1: error: 'Undeclared' does not name a type
Run Code Online (Sandbox Code Playgroud)

clang 3.0(trunk 133044)报道:

Z:\jm\dev>clang x.cpp
x.cpp:1:1: error: unknown type name 'Undeclared'
Undeclared var;
^
1 error generated.
Run Code Online (Sandbox Code Playgroud)

诊断消息的质量因编译器而异.