【发布时间】:2011-10-15 04:35:05
【问题描述】:
是否可以强制 gcc 报告错误,但继续编译过去?本质上,我试图在 .c 文件中生成错误列表,但 gcc 总是在第一个错误处终止。我已经在谷歌上搜索了一段时间,但据我所知,这并不是一个显而易见的问题。
【问题讨论】:
标签: linux gcc makefile compiler-errors
是否可以强制 gcc 报告错误,但继续编译过去?本质上,我试图在 .c 文件中生成错误列表,但 gcc 总是在第一个错误处终止。我已经在谷歌上搜索了一段时间,但据我所知,这并不是一个显而易见的问题。
【问题讨论】:
标签: linux gcc makefile compiler-errors
GCC 在无法继续前进时终止。
如果编译器遇到错误,它必须猜测正确的代码应该是什么并尝试遵循。实际上,这意味着您总是需要修复第一个错误并重新运行编译,因为其余的都是无稽之谈。
确保您没有打开-Wfatal-errors。
【讨论】:
最新版本的 GCC 将尝试在可能的情况下跳过某些错误。
假设 foo(){... 的主体包含 const-violation。翻译单元不会生成目标文件,但任何体面的编译器都会继续通过此错误进入bar(){...
其他错误是不可恢复的。如果您遗漏了一些花括号,则无法合理猜测如何进行。
【讨论】:
-fmax-errors=n
将错误消息的最大数量限制为 n,此时 GCC 会退出而不是尝试继续处理源代码。如果 n 为 0(默认值),则生成的错误消息的数量没有限制。如果还指定了 -Wfatal-errors,则 -Wfatal-errors 优先于该选项。
【讨论】: