-Wpedantic使用非扩展-std编译时会做什么吗?

时间:2019-02-12 00:25:45

标签: c++ c gcc compiler-warnings gcc-pedantic

如果我使用GCC编译我的C或C ++代码,则使用-std=c99-std=c++11或其他一些适当的ISO标准而不是GNU扩展名--Wpedantic会发出更多警告,通常得到?例如使用-W-Wall-Wall -Wextra

1 个答案:

答案 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方言和开关专家。