如何找出我的gcc默认使用的ANSI C标准?
我在这里看到它是带有扩展名的C90。 我怎么知道?
使用-std=
标志指定语言方言: c89
, c99
, c++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=...
命令行选项指定所需的版本来完全避免该问题。