开发者

How standardised are compilers' errors?

开发者 https://www.devze.com 2023-04-05 16:39 出处:网络
I am interested in automatically filtering and interpreting the error messages outputted by gcc and other compilers

I am interested in automatically filtering and interpreting the error messages outputted by gcc and other compilers

For example this regex (which could be improved but you get the idea)

^(.+?):(\d+)(:(\d+))?:\s+(\w+):\s+(.*)$

Would capture the following gcc error

x.cpp:5: error: expected initializer before 'std'

with

  • $1 = name of source
  • $2 = line number
  • $4 = column number (not all gcc versions)
  • $5 = category ("error" o开发者_C百科r "warning")
  • $6 = error text

What guarantees are made about the stability and portability of the string format between different versions of gcc? Any guarantees for other compilers?


There's no guarantee - the Standard will say "the code is ill-formed" and the compiler will emit whatever error it decides.

Also don't forget that most C++ compiler don't even produce optimally crafted error messages - there's nothing to standardize at the moment. For example, if you write:

statement1 //no ;
statement2;

they will say no ; before statement2 which is right, but not as convenient and useful as no ; after statement1 would be. And error messages emitted when compiling templates are so horrible that there're even stand-alone prettifiers for them.

0

精彩评论

暂无评论...
验证码 换一张
取 消