Возможно ли лучшее сообщение об ошибках в C ++? - PullRequest
0 голосов
/ 02 ноября 2011

В настоящее время, когда я компилирую этот код в Visual C ++ 10:

Undeclared var;

, компилятор выдает следующие сообщения об ошибках:

error C2065: 'CUndeclared' : undeclared identifier
error C2146: syntax error : missing ';' before identifier 'var'
error C2065: 'var' : undeclared identifier

, где полезно только первое, а остальныетолько увеличить шум на выходе.Теперь я понимаю, что, возможно, создание более привлекательных сообщений об ошибках не было главным приоритетом при разработке компилятора.

Что я хочу знать, так это - возможно ли вообще иметь лучшее представление отчетов об ошибках в C ++ или C ++ настолько хардкорный, чтоу компилятора не было другого выбора, кроме как сообщить о трех ошибках здесь?

Ответы [ 2 ]

5 голосов
/ 02 ноября 2011

g ++ 4.5.1 отчеты:

Z:\dev>g++ x.cpp
x.cpp:1:1: error: 'Undeclared' does not name a type

clang 3.0 (транк 133044) отчеты:

Z:\jm\dev>clang x.cpp
x.cpp:1:1: error: unknown type name 'Undeclared'
Undeclared var;
^
1 error generated.

Качество диагностических сообщений варьируется в зависимости от компилятора.

1 голос
/ 02 ноября 2011

возможно ли вообще иметь лучшие отчеты об ошибках в C ++ или C ++ настолько хардкор, что компилятору не оставалось ничего другого, как сообщить о трех ошибках здесь?

до определенной степени, да (см. вывод лягушек из ответа Джеймса).это методы восстановления ошибок компилятора, которые решают, как он будет сообщать об ошибках.(немного старше) gcc или msvc, кажется, не заботятся о восстановлении ошибок и вместо этого продолжают анализировать остальную часть исходного кода, в результате чего последующие ошибки будут шумом вместо истинных ошибок.лязг намного лучше в этом случае.см этот пост.

...