如何找出默认情况下我的gcc使用的ANSI C标准?
我读到它是带有扩展的C90。我如何确定呢?使用如何找出默认情况下我的gcc使用的ANSI C标准?,c,gcc,C,Gcc,我读到它是带有扩展的C90。我如何确定呢?使用-std=标志指定语言方言:c89、c99、c++98,等等。请注意c90等同于c89 作为速记 -ANSI >在C++模式下,在C模式和 > STD= C++98 C++中,导致代码> -STD= C89 使用-pedantic启用标准要求的所有诊断 C++默认值为 GNU89 >代码> GNU+98 。有关各种方言的详细说明,请参阅手册。阅读手册。在我的计算机上(OSX 10.7,gcc版本4.2.1(基于Apple Inc.build 5
-std=
标志指定语言方言:c89
、c99
、c++98
,等等。请注意c90
等同于c89
作为速记<代码> -ANSI >在C++模式下,在C模式和
启用标准要求的所有诊断-pedantic
<> C++默认值为<代码> GNU89<代码> >代码> GNU+98 。有关各种方言的详细说明,请参阅手册。阅读手册。在我的计算机上(OSX 10.7,gcc版本4.2.1(基于Apple Inc.build 5658)(LLVM build 2335.15.00)): -标准=
确定语言标准。当前仅支持此选项
编译C或C++时, 必须提供此选项的值;可能的值是 gnu89
默认情况下,ISO C90加GNU扩展(包括一些C99功能) gnu++98
与-std=c++98加GNU扩展相同。这是C++代码的默认值。
您还可以检查其中一个,例如您的GCC在默认情况下是否要求ANSI C(STRICT\u ANSI)(即,不带任何cli参数)。尝试下面的命令并搜索
std
gcc -v --help | less
它将显示gcc的所有可用选项。默认情况下,没有任何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
要查看您正在运行的版本,请访问页面并阅读您正在运行的版本的文档
更简单地说,如果您有5.0之前的版本,那么默认值是-std=gnu89
;否则默认值为-std=gnu11
。(这可能会在未来的版本中发生变化,但只有在新的ISO C标准发布之后,gcc维护人员有时间实施它并决定将其作为默认标准。不要屏住呼吸。)
或者,通过使用
-std=…
命令行选项指定所需的版本,您可以完全避免这个问题。以下哪一个是默认版本?gcc中是否有一个选项告诉我是否可以看到默认版本?@Bruce:已添加!请注意,C++默认值最终可能会改变:- C++模式和C++模式是什么意思?最近我读到了。这是什么意思?@KerrekSB:如果你知道,请回答我在先前评论中提出的问题。我想知道它,在飞行中,而不是创造一个话题D@Nawaz:这意味着编译器本身将使用g++,而不是gcc进行编译。我认为这意味着编译器的源代码被视为C++。这有意义吗?对我来说,它适用于GCC,但对Clang不适用。嗯,GCC的手册没有。Wat?但默认情况下不使用哪个选项。默认情况下,gcc的任何版本都不完全符合任何ANSI/ISO标准。