编译器的错误有多标准化?

时间:2011-09-19 13:18:24

标签: gcc compiler-errors standards string-formatting

我感兴趣的是自动过滤和解释gcc和其他编译器输出的错误消息

例如这个正则表达式(可以改进,但你明白了)

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

会捕获以下gcc错误

  

x.cpp:5:错误:'std'之前的预期初始化程序

  • $1 =来源名称
  • $2 =行号
  • $4 =列号(不是所有gcc版本)
  • $5 =类别(“错误”或“警告”)
  • $6 =错误文字

对不同版本的gcc之间的字符串格式的稳定性和可移植性有什么保证?对其他编译器的任何保证?

1 个答案:

答案 0 :(得分:0)

无法保证 - 标准会说“代码格式错误”,编译器会发出它决定的错误。

另外不要忘记大多数C ++编译器甚至不会产生最佳制作的错误消息 - 目前没有什么可以标准化的。例如,如果你写:

statement1 //no ;
statement2;

他们会说no ; before statement2这是正确的,但不像no ; after statement1那样方便实用。编译模板时发出的错误消息非常可怕,甚至还有独立的美化器。