C++ -std 编译标准

概述

任何一门编程语言都有相关的组织和团体在不停的维护和更新。原因很简单,时代在发展,编程语言如果停滞不前,最终就会被淘汰。
以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89 (偶尔又称为C90)、 C94 ( C89 的修订版)、 C99 、 C11 、 C17 ,以及当下正在开发的 C2X 新标准。甚至于在这些标准的基础上,GCC 编译器本身还对 C 语言的语法进行了扩展,先后产生了 GNU90、 GNU99 、 GNU11 以及 GNU17 这 4 个版本。 以 C 语言为例,发展至今该编程语言已经迭代了诸多个版本,例如 C89 (偶尔又称为 C90)、 C94 ( C89 的修订版)、 C99 、 C11 、 C17 ,以及当下正在开发的 C2X 新标准。甚至于在这些标准的基础上,GCC 编译器本身还对 C 语言的语法进行了扩展,先后产生了 GNU90、 GNU99 、 GNU11 以及 GNU17 这 4 个版本。
读者可能会问,这么多标准,GCC 编译器使用的到底是哪一套呢?不同版本的 GCC 编译器,默认使用的标准版本也不尽相同。以当前最新的 GCC 10.1.0 版本为例,默认情况下GCC 编译器会以 GNU11 标准( C11 标准的扩展版)编译 C 语言程序,以 GNU++14 标准(C++14 标准的扩展版)编译 C++ 程序。
那么,我们可以手动控制 GCC 编译器使用哪个编译标准吗?答案是肯定的,对于编译C、 C++ 程序来说,借助 -std 选项即可手动控制 GCC 编译程序时所使用的编译标准。也就是说,当使用 gcc 指令编译 C 语言程序时,我们可以借助 -std 选项指定要使用的编译标准;同样,当使用 g++ 指令编译 C++ 程序时,也可以借助 -std 选项指定要使用的编译标准。
-std 选项的使用方式很简单,其基本格式如下:
gcc/g++ -std=编译标准
注意,不同版本的 GCC 编译器,所支持使用的 C/C++ 编译标准也是不同的。下表罗列了常 用的 GCC 版本对 C 语言编译标准的支持程度。


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


举个例子,下面是一段 C++代码,里面使用到了 C++11 标准的 auto 自动推导,如果你的编译器没有默认指定以 C++11 标准去编译的会可能就会报错,所以这时我们要手动指定编译标准。

cpp 复制代码
int main(int argc, char const *argv[])
{
    auto a = 10;
    cout << sizeof a << endl;
    return 0;
}
相关推荐
Hui_AI7201 分钟前
基于RAG的农产品GEO溯源智能问答系统实现
开发语言·网络·人工智能·python·算法·创业创新
CDwenhuohuo2 分钟前
前端文件预览
开发语言·前端·javascript
charlie1145141918 分钟前
通用GUI编程技术——图形渲染实战(三十八)——顶点缓冲与输入布局:GPU的第一个三角形
开发语言·c++·学习·图形渲染·win32
IT猿手9 分钟前
SCI一区:章鱼优化算法(Octopus Optimization Algorithm, OOA)求解23个测试函数,出图丰富,提供完整MATLAB代码
开发语言·算法·matlab
程序员JerrySUN9 分钟前
Jetson边缘嵌入式实战课程第二讲:JetPack 和 SDK Manager 是什么
c语言·开发语言·网络·udp·音视频
不知名的老吴10 分钟前
后端知识点:Python处理加权点赞
开发语言·python
用户8055336980313 分钟前
现代Qt开发教程(新手篇)1.10——进程
c++·qt
海参崴-19 分钟前
C++ STL篇 AVL树的模拟实现
开发语言·c++
汉克老师21 分钟前
GESP2025年6月认证C++五级( 第二部分判断题(1-10))
c++·贪心算法·分治算法·线性筛法·gesp5级·gesp五级
Cyber4K27 分钟前
【Python专项】基础语法(2)
开发语言·python