如何指示GCC在5次错误后停止?

yeg*_*256 73 c++ gcc g++

是否有可能指示GNU c ++编译器在发现5个错误后停止?在文档中找不到这个.提前致谢.

zwo*_*wol 81

命令行选项指示编译器在N次错误后放弃.此选项存在于GCC 4.6及更高版本中.-fmax-errors=N

命令行选项-Wfatal-errors指示编译器在出现一个错误后放弃.此选项存在于GCC 4.0及更高版本中.

在这两种情况下,除非您另行指定,否则警告不会计入限制-Werror.

  • 我会给这个+1但是关于`-Werror`的陈述.我认为警告绝对应该被视为错误,因为大多数警告都是错误代码的指示. (5认同)
  • @greyfade,我也认为警告通常应该被视为必须修复,但不幸的是,gcc的某些警告可能会触发或不依赖于优化级别,系统标题的内容以及您无法轻易控制的任何其他内容.因此,您可能会在规范构建平台上获得所有警告,但随后一些可怜的schmuck试图在更加异乎寻常的环境中构建并且它会爆炸. (3认同)
  • 不幸的是,链接器不支持`-fmax-errors`标志(从arm-none-eabi-gcc 5.4.1开始).我使用选项`-finstrument-functions`,由于未定义的`__cyg_profile_func_enter`函数,我得到了数百个错误. (3认同)
  • @Zack,是不是-Wno-system-headers用于什么? (2认同)
  • 我所听到的关于不初始化编译器将被“ -Wuninitialized”误报的变量的论点是:它将I-cache浪费在已死但无法证明的死存储指令上;如果某些变化使警告成为真实的肯定,我们希望valgrind抓住它。 (2认同)
  • gcc还可以根据条件生成有符号溢出的虚假警告.通常它是`if(a - b> c)`由优化器重新排列成`if(a> c + b)`的形式.该代码没有错,但优化器会在重新排列内容时发出警告. (2认同)

小智 42

你可以使用gcc选项:

-fmax-errors=5
Run Code Online (Sandbox Code Playgroud)

以此目的.

  • @Telthien http://stackoverflow.com/questions/how-to-answer说"任何能让提问者朝着正确的方向前进的答案都是有帮助的","简洁是可以接受的".答案旨在提供解决方案,有时可以用一个句子完成. (13认同)
  • @Telthien为什么?这似乎是对我的回答. (9认同)
  • 这就是答案 (2认同)

小智 5

我也欢迎这样的选择。现在,我正在使用以下解决方法来获取前五个错误:

<make> 2>&1|grep error|head -5
Run Code Online (Sandbox Code Playgroud)