0

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

4

1 回答 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 回答