我正在使用Ubuntu。
在 C++ 中编程时,nullptr
编译器无法识别该关键字。
它说它没有在此范围内声明。
即使我设置了标志,它也不起作用-std=c++11
。
答案1
C++11 不是编译器,而是由许多流行编译器实现的 ISO 标准。 Ubuntu 上默认的 C++ 编译器g++
来自 GNU 编译器集合。正如您在问题中提到的,该-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")