如何找出我的gcc默认使用的ANSI C标准?

我在这里看到它是带有扩展名的C90。 我怎么知道?

使用-std=标志指定语言方言: c89c99c++98等。请注意, c90等同于c89

作为简写-ansi在C模式下导致-std=c89而在C ++模式下导致-std=c89 -std=c++98

使用-pedantic启用标准所需的所有诊断。

对于C和gnu++98 ,C ++的默认gnu89 。 有关各种方言的详细说明,请参阅手册。

阅读联机帮助页。 在我的计算机上(OSX 10.7,gcc版本4.2.1(基于Apple Inc. build 5658)(LLVM build 2335.15.00)):

-std =
确定语言标准。 目前仅支持此选项
在编译C或C ++时。

必须提供此选项的值; 可能的值是

….

gnu89
默认,ISO C90加上GNU扩展(包括一些C99function)。

….

GNU ++ 98
与-std = c ++ 98加上GNU扩展相同。 这是C ++代码的默认值。

尝试以下命令并搜索std

 gcc -v --help | less 

它将显示您的gcc的所有可用选项。

您还可以检查其中一个预定义的宏 ,例如,默认情况下您的GCC是否要求ANSI C( STRICT__ANSI )(即没有任何cli参数)。

默认情况下,没有任何版本的gcc完全符合任何ANSI或ISO C标准。 默认值始终等效于-std=gnuNN ,支持具有GNU特定扩展的给定标准。 在版本5之前(并且可以追溯到多年),默认-std=gnu90 。 从版本5开始,默认值为-std=gnu11

有三种ISO C标准:C90,C99和C11。 (C95是对C90的一个小修正。)第一个ANSI C标准于1989年出版,被称为C89; 它描述的语言与ISO C90标准相同。

要查找已运行的gcc的默认语言版本,请键入

  info gcc 

搜索短语“默认”。

这假设您已安装gcc文档, info gcc显示的文档与您正在运行的gcc版本匹配,并且措辞足够相似以至于搜索“默认”将找到正确的信息。 这些都不是保证。 较旧的gcc手册可能以不同的方式组织。

更可靠,运行

 gcc --version 

要查看您正在运行的版本,请访问GCC在线文档页面并阅读您正在运行的版本的文档。

更简单地说,如果你有一个5.0之前的版本,默认是-std=gnu89 ; 否则默认值为-std=gnu11 。 (这可能会在未来的版本中发生变化,但只有在新的ISO C标准发布并且gcc维护者有时间实现它并决定将其作为默认值之后的一段时间。请不要屏住呼吸。)

或者,您可以通过使用-std=...命令行选项指定所需的版本来完全避免该问题。