在Xcode IDE中,我可以选择将C语言方言设置为
C
我理解他们的意思,除了ANSI C,因为我知道,ANSI C只是C89或C99的一种。但这上面应该有个原因。“ANSI C”一词在里面具体指的是什么?
发布于 2011-03-15 15:40:09
假设您是,实际上,使用GCC作为编译器,ANSI和C89是同一件事的别名。请参见:
http://gcc.gnu.org/onlinedocs/gcc/C-Dialect-Options.html#C-Dialect-Options
我不知道为什么苹果公司会决定把这两款产品都展示出来。GCC没有什么实际的区别。也许他们是多疑,以防-ansi的含义在GCC的后期版本中改变(也许是C99)。
发布于 2011-03-15 15:36:52
编辑信用转到@Nicholas 发布XCode的C方言选择窗口:http://dl.dropbox.com/u/14571816/xcodelang.png的截图
ANSI C在历史上是指ANSI C89标准(实际上与C90相同)。XCode使用GCC的一个版本作为编译C代码的编译器后端,所以我认为这就是它们获得这些“选项”的地方,因为您可以指定-ansi标志或各种std=标志来选择C编译器后端用于编译代码的模式。
因此,如果您将它传递给-ansi,并使用C编译器,则它等同于-std=c90,这也相当于-std=c89或-std=iso9899:1990。
-ansi
在C模式下,这等同于-std=c90。在C++模式下,它与-std=c++98等价。
如果使用-std标志,则可以传递某些值来激活不同的语言特性。
-std=
确定语言标准。目前只有在编译C或C++时才支持此选项。
这些论点相当于:
c90
c89
iso9899:1990支持所有C90程序(某些与C90冲突的GNU扩展被禁用)。C代码与-ansi相同。
这些论点相当于:
修改后的
iso9899:199409ISO C90。
以下这些论点是等价的:
c99
c9x
iso9899:1999
iso9899:199x
ISO C99.请注意,尚未完全支持此标准;有关更多信息,请参见http://gcc.gnu.org/gcc-4.5/c99status.html。不推荐使用c9x和The 9899:199x的名称。
以下这些论点是等价的:
gnu90
gnu89
C90的GNU方言(包括一些C99特性)。这是C代码的默认设置。
以下这些论点是等价的:
gnu99
gnu9x
ISO C99的GNU方言。当ISO C99在GCC中全面实施时,这将成为默认情况。不推荐使用gnu9x这个名称.
发布于 2011-03-15 15:28:39
C是70年代出生的。
1978年,Brian和Dennis出版了“,”一书。这本书(第一版)中所描述的语言现在被称为"K&R C“。
1988年左右,出版了第二版。第二版非常非常类似于ANSI (ISO)标准,也是人们在提到( :)时通常谈论的版本。
编译器编写人员开始对该语言进行更改,为了使其标准化,ANSI于1989年发布了一个标准( C89标准或ANSI )。随后不久,国际标准化组织(C90)对ANSI进行了几乎没有任何改变。
1999年,国际标准化组织发布了另一个C标准:我们称之为C99。
所以,如果我是对的,ANSI C只有几个月的时间,但是ANSI C和C90之间的差别很小。事实上,今天的许多编译器都是带有附加的ANSI C的编译器(而不是使用附加的ISO C99,但没有几样东西)。
https://stackoverflow.com/questions/5313684
复制相似问题