我感兴趣的是自动过滤和解释gcc和其他编译器输出的错误消息
例如这个正则表达式(可以改进,但你明白了)
^(.+?):(\d+)(:(\d+))?:\s+(\w+):\s+(.*)$
会捕获以下gcc错误
x.cpp:5:错误:'std'之前的预期初始化程序
与
$1
=来源名称$2
=行号$4
=列号(不是所有gcc版本)$5
=类别(“错误”或“警告”)$6
=错误文字对不同版本的gcc之间的字符串格式的稳定性和可移植性有什么保证?对其他编译器的任何保证?
答案 0 :(得分:0)
无法保证 - 标准会说“代码格式错误”,编译器会发出它决定的错误。
另外不要忘记大多数C ++编译器甚至不会产生最佳制作的错误消息 - 目前没有什么可以标准化的。例如,如果你写:
statement1 //no ;
statement2;
他们会说no ; before statement2
这是正确的,但不像no ; after statement1
那样方便实用。编译模板时发出的错误消息非常可怕,甚至还有独立的美化器。