linux如何查看编译器支持的C++版本(支持C++11、支持C++14、支持C++17、支持C++20)(编译时不指定g++版本,默认使用老版本编译)

本文概述了C++从C++11到C++20的主要改进,包括智能指针、范围循环、初始化列表、Lambda表达式、多线程库增强、以及后续版本中对可变参数、类型推导、并发编程等的支持。还介绍了如何检查编译器对不同版本C++的支持。
摘要由CSDN通过智能技术生成

参考:https://blog.csdn.net/Dontla/article/details/129016157
C++各个版本
C++11
C++11是一个重要的C++标准版本,于2011年发布。C++11带来了许多重要的改进,包括:

智能指针:引入了shared_ptr和unique_ptr等智能指针,用于更好地管理动态内存分配。
新的循环语句:引入了for循环中的范围语法,以更简洁的方式遍历容器。
初始化列表:允许使用初始化列表来初始化数组和结构体等数据结构。
Lambda表达式:允许在代码中直接创建匿名函数。
多线程:引入了多线程库,用于简化多线程编程。
C++14
C++14:是C++11的一个小范围修订版本,于2014年发布,主要包括:

增加了对可变参数的支持。
增加了对类型推导的支持。
提高了constexpr函数的限制。
C++17
C++17:是C++14的一个较大范围修订版本,于2017年发布,其中一些重要的改进包括:

增加了新的文件系统库。
支持了构造函数的默认参数。
支持了结构体包含,简化了结构体的初始化。
增加了对并行编程的支持。
C++20
C++20:是C++17的一个较大范围修订版本,于2020年发布,其中一些重要的改进包括:

引入了模板参数推导。
引入了协同程序,以简化异步编程。
引入了模板类型推导,以简化模板编程。
支持了关键字import,以简化模块的导入。

查看自己的编译器支持C++哪个版本
(浪潮服务器ubuntu20.04 gcc9.4.0)

例如,检查是否支持C++11

g++ -std=c++11 -E - < /dev/null

这行代码是使用g++编译器来编译一段简单的C++代码,以检查您的系统是否支持C++11。
其中,-std=c++11选项告诉编译器使用C++11标准编译代码。
-E选项告诉编译器只进行预处理,而不进行编译和链接步骤。
最后,- < /dev/null表示将标准输入重定向到/dev/null,以便编译器不必读取任何输入。
如果命令行没有输出(或者只输出了警告信息),则说明您的系统支持C++11。如果输出了错误信息,则说明您的系统不支持C++11。
在这里插入图片描述
检查是否支持C++14

g++ -std=c++14 -E - < /dev/null

在这里插入图片描述
检查是否支持C++17

g++ -std=c++17 -E - < /dev/null

在这里插入图片描述
检查是否支持C++20(注意20要写成2a)

g++ -std=c++2a -E - < /dev/null

在这里插入图片描述
上面都是支持情况的打印,如果不支持,会提示什么呢?

(136盒子 ubuntu16.04 gcc5.4.0)在这里插入图片描述
如图,这个环境不支持C++20

注意:编译时不指定g++版本,默认使用老版本编译(存疑)
如果在编译时不指定C++的版本,那么g++编译器会使用默认的C++版本。
一般情况下,默认的C++版本可能是比较老的版本,例如C++98或C++03。
因此,如果需要使用新的C++特性,比如C++11或C++14,最好明确指定版本。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值