Sup*_*mum 8 gcc compiler-errors compiler-warnings
在gcc中使用-pedantic-errors和-Werror = pedantic有什么区别?
根据海湾合作委员会的文件,有一点不同:
-pedantic-错误
只要基本标准(请参阅-Wpedantic)需要诊断,在某些情况下在编译时存在未定义的行为,并且在某些其他情况下不会阻止根据标准编译有效的程序,则会发出错误.这不等同于-Werror = pedantic,因为此选项启用了错误而后者未启用,反之亦然.
-pedantic-errors包含哪些错误,但不包括-Werror = pedantic?
-Werror = pedantic包含哪些错误,但不包括-pedantic-errors?
这两种错误的任何一个例子?
小智 1
关于为什么这两个选项单独存在的一点见解,请参见gcc 文档的第 14 章:
\n\n\n当编译器没有为某个程序生成错误\n消息时,某些 ISO C 测试套件会报告失败
\n对于某些类型的无效程序,ISO C 需要 \xe2\x80\x9cdiagnostic\xe2\x80\x9d 消息,但 GCC 定义了一个警告来算作诊断。如果 GCC 产生警告而不是错误,则 ISO C 支持是正确的。如果测试套件调用此 \xe2\x80\x9cfailure\xe2\x80\x9d,则它们应该\n使用 GCC 选项运行
\n-pedantic-errors,这会将这些警告转为错误。
因此,听起来好像有一些 ISO C 规则没有明确标记为无效 C,而是标记为有效 C。这些规则会-pedantic-errors导致错误,但-Werror=pedantic实际上不会。您必须查看 ISO C 标准以获取更多信息。
至于 GCC 记录的打开/关闭哪些错误,只有 1 个明确-pedantic-errors:
\n\n-Wno-隐式函数声明
\n(仅限 C 和 Objective-C)\n此选项控制在声明之前使用函数时的警告。此警告在 C99 和更高版本的 C 方言中默认启用,-Wall 也默认启用。该警告被 -pedantic-errors 变成错误。
\n
注意:然而,似乎并非该手册的所有作者都有相同的想法。在第 2 节中,它谈到-pedantic-errors好像是一样的:
\n\n要获得标准所需的所有诊断,您还应该指定
\n-pedantic(或者-pedantic-errors如果您希望它们是错误而不是警告)。
所以我相信您已经发现了编辑上的差异。
\n