如果我使用GCC编译我的C或C ++代码,则使用-std=c99
或-std=c++11
或其他一些适当的ISO标准而不是GNU扩展名--Wpedantic
会发出更多警告,通常得到?例如使用-W
,-Wall
或-Wall -Wextra
?
答案 0 :(得分:3)
是的,使用-pedantic
会使GCC更严格。在GCC 8.2中,int foo(void) { return ({3;}); }
仅使用-Wall -std=c11
进行编译而没有投诉,但是在添加了-pedantic
的情况下得到了以下警告:
警告:ISO C禁止表达式[-Wpedantic]中的括号组
(所使用的功能,语句表达式,旨在用于宏。在我的示例中,该功能仅用作原理证明。)
比较和对比:
-std=gnu11
要求C的非标准版本。-std=c11
请求C的标准版本。C标准允许甚至邀请扩展,因此您仍可以对-std=c11
使用某些GNU扩展。 / li>
-pedantic
会要求编译器警告某些GNU扩展以及它原本允许的“传统”功能。 documentation还暗示,海湾合作委员会可能会对标准C发出的某些警告不严,-pedantic
导致GCC发出严格的ISO C要求的所有警告。
可能会有其他变化;我不是GCC方言和开关专家。