gcc - 编译器的错误如何标准化?

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

例如,此正则表达式(可以进行改进,但您可以理解)

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

将捕获以下gcc错误

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




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

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

    最佳答案

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

    同样不要忘记,大多数C++编译器甚至都不会产生经过精心设计的错误消息-目前尚无标准化的消息。例如,如果您编写:

    statement1 //no ;
    statement2;
    

    他们会说no ; before statement2是正确的,但没有no ; after statement1方便和有用。而且编译模板时发出的错误消息非常可怕,以至于甚至有独立的前缀。

    https://stackoverflow.com/questions/7471579/

    相关文章:

    php - 生成php_perl.dll失败

    compilation - apt-pkg编译问题

    java - 比较原始类型

    java - Java编译时错误: reached end of file while parsin

    compiler-errors - pygame炮弹碰撞检测

    compiler-construction - lex 使用来自 lex.yy.c 文件的 flex

    asp.net - 运行时CS0234在VS2010 Web应用程序中访问SOAP Web服务时出错

    java - 编译时出现一个或多个错误的NetBeans项目

    objective-c - UIAlertView dismissWithClickedButton

    c++ - 新手Chrome插件开发人员需要NPAPI入门方面的帮助