良许Linux教程网 干货合集 GCC -std编译标准一览表

GCC -std编译标准一览表

编程语言的维护和更新是由相关组织和团体负责的。这是因为随着时代的发展,编程语言需要跟进并不断改进,否则就会被淘汰。

以C语言为例,该编程语言已经经历了多个版本的迭代,包括C89(有时也称为C90)、C94(C89的修订版)、C99、C11、C17,以及目前正在开发的C2X新标准。此外,GCC编译器还对C语言的语法进行了扩展,产生了GNU90、GNU99、GNU11和GNU17等四个版本。

有趣的是,GCC编译器中对C语言的扩展,往往会被C语言标准委员会采纳,并添加到新的C语言标准中。例如,GNU90中的一些扩展被融入了新的C99标准中;而GNU90和GNU99中的一些扩展,则被融入了新的C11标准中。

C++语言的发展也经历了多个版本,包括C++98、C++03(C++98的修订版)、C++11(有时也称为C++0x)、C++14、C++17,以及即将发布的C++20新标准。与C语言类似,GCC编译器也根据不同的C++标准做了相应的扩展,如GNU++98、GNU++11、GNU++14、GNU++17等。

读者可能会想知道,GCC编译器默认使用的是哪个标准?不同版本的GCC编译器,默认使用的标准也不尽相同。以最新的GCC 10.1.0版本为例,默认情况下,GCC编译器会以GNU11标准(C11标准的扩展版)编译C语言程序,以GNU++14标准(C++14标准的扩展版)编译C++程序。

对于编译C和C++程序,我们是否可以手动控制GCC编译器使用哪个标准呢?答案是肯定的。通过使用-std选项,我们可以手动控制GCC编译器使用的编译标准。例如,当使用gcc命令编译C语言程序时,可以使用-std选项指定要使用的编译标准;而在使用g++命令编译C++程序时,也可以使用-std选项指定要使用的编译标准。可以参考GCC手册,了解不同版本的GCC编译器默认使用的编译标准。

-std 选项的使用方式很简单,其基本格式如下:

gcc/g++ -std=编译标准

注意,不同版本的 GCC 编译器,所支持使用的 C/C++ 编译标准也是不同的。表 1 罗列了常用的 GCC 版本对 C 语言编译标准的支持程度。

表 1 不同GCC版本支持的C语言编译标准image-20240119201951870

 

注意,表头表示的是各个编译标准的名称,而表格内部的则为 -std 可用的值,例如 -std=c89、-std=c11、-std=gnu90 等(表 2 也是如此)。

表 2 罗列了常用的 GCC 版本对 C++ 程序编译标准的支持程度。

表 2 不同GCC版本支持的C++编译标准

image-20240119202104602
image-20240119202104602

举个例子,如下是一个 C 语言源程序:

[root@bogon demo]# ls
main.c
[root@bogon demo]# cat main.c
#include 
int main(){
    for(int i=0;iprintf("i=%d ",i);
    }
}

如果我们想以 c99 的标准编译它,在确认当前所有 GCC 编译器版本支持 C99 标准的前提下,通过执行如下指令,即可完成编译:

[root@bogon demo]# gcc -std=c99 main.c -o main.exe
[root@bogon demo]# ./main.exe
i=0 i=1 i=2 i=3 i=4 i=5 i=6 i=7 i=8 i=9

但是,对于在 for 循环中声明变量 i 的做法,是违反 C89 标准的。也就是说,如果我们以 C89 的编译标准编译 main.c,GCC 编译器会报错:

[root@bogon demo]# gcc -std=c89 main.c -o main.exe
main.c: In function ‘main’:
main.c:3: error: ‘for’ loop initial declarations are only allowed in C99 mode
main.c:3: note: use option -std=c99 or -std=gnu99 to compile your code

这也就意味着,在编写程序前必须明确要使用的编译标准,并清楚的知道该标准下什么可用,什么不可用。

以上就是良许教程网为各位朋友分享的Linu系统相关内容。想要了解更多Linux相关知识记得关注公众号“良许Linux”,或扫描下方二维码进行关注,更多干货等着你 !

137e00002230ad9f26e78-265x300
本文由 良许Linux教程网 发布,可自由转载、引用,但需署名作者且注明文章出处。如转载至微信公众号,请在文末添加作者公众号二维码。
良许

作者: 良许

良许,世界500强企业Linux开发工程师,公众号【良许Linux】的作者,全网拥有超30W粉丝。个人标签:创业者,CSDN学院讲师,副业达人,流量玩家,摄影爱好者。
上一篇
下一篇

发表评论

联系我们

联系我们

公众号:良许Linux

在线咨询: QQ交谈

邮箱: yychuyu@163.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部