在GCC中设置std = c99标志


69

我想知道是否可以在其中设置-std=c99标志的文件,这样就不必为每次编译都设置标志。我在Ubuntu上使用GCC 4.4。

Answers:


106

而不是调用/usr/bin/gcc,请使用/usr/bin/c99。这是单Unix批准的调用C99编译器的方式。在Ubuntu系统上,这指向一个脚本,该脚本gcc在添加了-std=c99标志之后才调用,而这正是您想要的。


好的,我是linux编程的新手(在大学学习),如何使用/ usr / bin / c99?我正在使用带有C插件的Vim-Gnome,我只在其中\ rr进行编译和运行。
Fatmarik'2

1
根据我在Web上找到的内容,有一个名为C_CCompilerC的全局变量,它指定C编译器。通常设置为gcc。将其内容替换为和c99,一切应该正常。请参见以下帮助文件:lug.fh-swf.de/vim/vim-doc/csupport.html
Thomas Pornin 2010年

1
请注意,在Mac上使用c99可能会给您带来令人惊讶的结果:stackoverflow.com/questions/4182413
dubiousjim 2012年

17

怎么alias gcc99= gcc -std=c99


5
+1这就是我所做的。在使用它时,将-Wall和-pedantic标志添加到别名。

4
+1。现在,就是我的别名实际上是这样的:alias gcc99=gcc -Wall -pedantic -ansi -std=c99。是的,ansi还有。
2010年

5
@dirkgently:那么GCC实施的标准是-std=c99 -ansi什么?您启用了C99,然后禁用了C89中没有的任何功能,这是否会导致两者的共同子集?
史蒂夫·杰索普

2
我确实读过,但是它告诉我GCC做什么,而不是为什么它有用;-)。特别是,为什么和为什么-ansi -std=c99 -pedantic要比-std=c89 -pedantic
史蒂夫·杰索普

4
顺序当然很重要。例如int main() { // thing <newline> },其中<newline>是换行符。与一起编译gcc -ansi -std=c99 -pedantic,但不与一起编译gcc -std=c99 -ansi -pedantic
史蒂夫·杰索普
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.