在 GCC 中设置 std=c99 标志
Posted
技术标签:
【中文标题】在 GCC 中设置 std=c99 标志【英文标题】:Setting std=c99 flag in GCC 【发布时间】:2011-01-12 17:05:41 【问题描述】:我想知道是否有任何文件可以设置-std=c99
标志,这样我就不必为每次编译都设置它。我在 Ubuntu 上使用 GCC 4.4。
【问题讨论】:
【参考方案1】:不要调用/usr/bin/gcc
,而是使用/usr/bin/c99
。这是单 Unix 批准的调用 C99 编译器的方式。在 Ubuntu 系统上,这指向一个脚本,该脚本在添加 -std=c99
标志后调用 gcc
,这正是您想要的。
【讨论】:
好的,我是 linux 编程新手(在大学学习),如何使用 /usr/bin/c99 ?我正在使用带有 C 插件的 Vim-Gnome,我只是在其中执行 \rr 来编译和运行。 从我在网上找到的资料来看,有一个名为C_CCompiler
的全局变量指定了C 编译器。它通常设置为gcc
。用c99
替换它的内容,一切都会好起来的。请参阅以下帮助文件:lug.fh-swf.de/vim/vim-doc/csupport.html
请注意,在 Mac 上使用 c99 可能会给您带来意想不到的结果:***.com/questions/4182413【参考方案2】:
alias gcc99= gcc -std=c99
怎么样?
【讨论】:
+1 我就是这么做的。当您使用它时,将 -Wall 和 -pedantic 标志添加到别名中。 +1。现在这就是我的别名的实际样子:alias gcc99=gcc -Wall -pedantic -ansi -std=c99
。是的,ansi
也是如此。
@dirkgently:那么 GCC 使用 -std=c99 -ansi
实现了什么标准(如果有)?你启用了 C99,然后禁用了 C89 中没有的任何东西,这会导致两者的共同子集吗?
我确实读过,但它告诉我 GCC 做了什么,而不是为什么它有用 ;-)。特别是,-ansi -std=c99 -pedantic
如何以及为什么优于 -std=c89 -pedantic
?
顺序确实很重要。例如int main() // thing <newline>
,其中 gcc -ansi -std=c99 -pedantic
编译,但不使用gcc -std=c99 -ansi -pedantic
。以上是关于在 GCC 中设置 std=c99 标志的主要内容,如果未能解决你的问题,请参考以下文章
带有 -std=c99 的 GCC 抱怨不知道 struct timespec