我看了here它是带扩展名的C90。我怎么知道?
答案 0 :(得分:7)
阅读联机帮助页。在我的计算机上(OSX 10.7,gcc版本4.2.1(基于Apple Inc. build 5658)(LLVM build 2335.15.00)):
-std =
确定语言标准。目前仅支持此选项 在编译C或C ++时。必须提供此选项的值;可能的值是
...
gnu89
默认,ISO C90加上GNU扩展(包括一些C99功能)。...
gnu ++ 98
与-std = c ++ 98加上GNU扩展相同。这是C ++代码的默认值。
答案 1 :(得分:5)
尝试以下命令并搜索std
gcc -v --help | less
它会显示gcc的所有可用选项。
答案 2 :(得分:4)
使用-std=
标记指定语言方言:c89
,c99
,c++98
等。请注意c90
相当于{{1} }}
作为简写c89
导致C模式下的-ansi
和C ++模式中的-std=c89
。
使用-std=c++98
启用标准所需的所有诊断。
C的默认值为-pedantic
,C ++的默认值为gnu89
。有关各种方言的详细说明,请参阅手册。
答案 3 :(得分:0)
您还可以选中其中一个predefined Macros,例如默认情况下您的GCC是否要求ANSI C( STRICT__ANSI )(即没有任何cli参数)。
答案 4 :(得分:0)
默认情况下,没有任何版本的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 online documentation页面并阅读您正在运行的版本的文档。
更简单地说,如果您的版本在5.0之前,则默认为-std=gnu89
;否则默认值为-std=gnu11
。 (这可能会在未来的版本中发生变化,但只有在新的ISO C标准发布并且gcc维护者有时间实施它并决定将其作为默认值之后的一段时间。不要屏住呼吸。)< / p>
或者您可以通过使用-std=...
命令行选项指定所需的版本来完全避免该问题。