如何将 C++11 设置为我的默认编译器?

use*_*335 2 compiling g++

我正在使用 Ubuntu。

在 C++ 中编程时,nullptr编译器无法识别关键字。

它说它没有在这个范围内声明

它不起作用,即使我设置了 flag -std=c++11

Nat*_*man 6

C++11 不是编译器,而是由许多流行的编译器实现的 ISO 标准。Ubuntu 上的默认 C++ 编译器g++来自 GNU Compiler Collection。正如您在问题中提到的,该-std=c++11标志启用了 C++11 功能g++以及 Clang,这是 Ubuntu 上可用的另一个 C++ 编译器。

当您的编译器未启用或不支持 C++11 支持时,会显示您看到的错误消息。GCC 4.6是第一个版本的支持nullptr,因此,如果您使用的是较早的版本,您将无法使用nullptr。使用g++ --version获得安装的版本。

假设您至少使用 GCC 4.6,您将需要确定为什么您的构建系统没有将正确的标志传递给编译器。例如,在 CMake 中,您将需要使用:

set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
Run Code Online (Sandbox Code Playgroud)