如果我使用 GCC 编译我的 C 或 C++ 代码,使用-std=c99
或-std=c++11
或其他一些适当的 ISO 标准而不是 GNU 扩展 - 会-Wpedantic
发出更多我通常会得到的警告吗?例如与-W
,-Wall
或-Wall -Wextra
?
问问题
367 次
1 回答
3
是的,使用-pedantic
使 GCC 更加严格。在GCC 8.2中,int foo(void) { return ({3;}); }
使用 just 编译没有抱怨,-Wall -std=c11
但添加以下警告-pedantic
:
警告:ISO C 禁止表达式中的大括号组 [-Wpedantic]
(使用的功能,语句表达式,旨在用于宏。在我的示例中,它仅用作原理证明。)
比较和对比:
- 例如,使用
-std=gnu11
请求非标准版本的 C。 - 使用
-std=c11
请求标准版本的 C。C 标准允许甚至邀请扩展,因此您仍然可以将某些 GNU 扩展与-std=c11
. - 添加
-pedantic
请求,编译器会警告某些 GNU 扩展和它原本允许的“传统”功能。
该文档还表明 GCC 可能对它应该使用标准 C 发出的某些警告松懈,并-pedantic
导致它发出严格的 ISO C 要求的所有警告。
可能会有额外的变化;我不是 GCC 方言和开关方面的专家。
于 2019-02-12T01:41:03.907 回答