-std=c++11

C++11标准编译介绍
-std=c++11就是用按C++2011标准来编译的,早期一些的是用C++1998编译的。现在好像都是开着用2011年标准编译的了。
 

                
在使用 `make` 构建项目时,若需通过添加 `-std=c++11` 选项来启用 C++11 标准,通常需要在构建系统的配置中指定编译器标志。对于基于 `Makefile` 的项目,可以直接在 `Makefile` 中设置 `CXXFLAGS` 变量以包含 `-std=c++11`。 例如,一个简单的 `Makefile` 示例可以如下所示: ```makefile CXX = g++ CXXFLAGS = -std=c++11 -Wall -Wextra -g SRCS = main.cpp test.cpp OBJS = $(SRCS:.cpp=.o) EXEC = myapp all: $(OBJS) $(CXX) $(CXXFLAGS) $(OBJS) -o $(EXEC) %.o: %.cpp $(CXX) $(CXXFLAGS) -c $< -o $@ clean: rm -f $(OBJS) $(EXEC) ``` 在此 `Makefile` 中,`CXXFLAGS` 包含了 `-std=c++11`,这将确保所有 C++ 源文件在编译时都使用 C++11 标准。如果编译器不支持 `-std=c++11`,可以尝试使用 `-std=c++0x` 作为替代,这在一些较老的编译器版本中是支持的 [^1]。 对于使用 CMake 的项目,可以通过设置 `CMAKE_CXX_FLAGS` 来添加 `-std=c++11` 编译选项。然而,在设置这些标志之前,建议先检查编译器是否支持 C++11C++0x 标准,并根据支持情况选择合适的编译选项。CMake 提供了 `CheckCXXCompilerFlag` 模块来检测编译器是否支持特定的编译标志 [^1]。 以下是一个 CMakeLists.txt 文件的片段,展示了如何根据编译器的支持情况自动选择正确的 C++ 标准: ```cmake project(test) cmake_minimum_required(VERSION 2.8) aux_source_directory(. SRC_LIST) add_executable(${PROJECT_NAME} ${SRC_LIST}) include(CheckCXXCompilerFlag) CHECK_CXX_COMPILER_FLAG("-std=c++11" COMPILER_SUPPORTS_CXX11) CHECK_CXX_COMPILER_FLAG("-std=c++0x" COMPILER_SUPPORTS_CXX0X) if(COMPILER_SUPPORTS_CXX11) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11") elseif(COMPILER_SUPPORTS_CXX0X) set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++0x") else() message(STATUS "The compiler ${CMAKE_CXX_COMPILER} has no C++11 support. Please use a different C++ compiler.") endif() ``` 该脚本首先检查编译器是否支持 `-std=c++11`,如果支持,则设置 `CMAKE_CXX_FLAGS` 使用该标志;如果不支持,则尝试使用 `-std=c++0x`;如果两者都不支持,则输出一条消息提示用户使用的编译器不支持 C++11 [^1]。 在某些情况下,可能需要手动指定编译器标志来覆盖默认行为。例如,在某些环境中,可能需要使用 `QMAKE_CXXFLAGS` 来设置 Qt 项目中的 C++ 标准,但这并不适用于所有项目类型 。 最后,确保你的编译器版本支持你想要使用的 C++ 标准是非常重要的。如果你的编译器不支持 C++11,那么即使你在 `Makefile` 或 CMakeLists.txt 文件中指定了 `-std=c++11`,也会导致错误 。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值