c++ - gcc 4.8 无法识别 nullptr

标签 c++ c++11 gcc

在 Red Hat Linux 工作站上,我使用 devtoolset2 给出以下命令:

scl enable devtoolset-2 bash

然后,当我调用 gcc --version 时,我得到:

gcc (GCC) 4.8.2 20140120(红帽 4.8.2-15) 版权所有 (C) 2013 Free Software Foundation, Inc.

但是如果我编译我的程序(用 cmake 生成的 malkefile,添加行:

if(UNIX)
    SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -std=c++11")
endif()

我有以下错误信息:

cc1plus: error: unrecognized command line option "-std=c++11"

如果我编译用 -std=c++0x 替换 -std=c++11 然后,我收到这些消息:

nullptr wasnt declared in this scope.

为什么 nullptr 不能被识别,因为它是一个关键字?

我不明白,如果你有什么想法......

最佳答案

您没有调用 GCC 4.8.2。

您的 CMake 配置有问题,或者您的 SCL 调用有问题,或者 gcc -vg++ -v 给出了不同的答案(在这种情况下,请检查您的工具集的内容)。

nullptr 不可用,-std=c++0x 被接受但 -std=c++11 不可用,都建议 GCC 4.3、4.4 或 4.5。

您可以尝试的一件事是从构建根目录中删除文件 CMakeCache.txt,它可能包含您之前环境的缓存属性。

否则,打开详细输出,这样您就可以真正看到发生了什么,正在调用哪些二进制文件,以及如何调用。

关于c++ - gcc 4.8 无法识别 nullptr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32230542/

相关文章:

c++ - 演绎指南和可变参数模板

python - 将基数设置为未确定大小的对象

gcc - 将硬 float ABI 与不使用 VFP/NEON 运行的代码混合

C++/面向对象 : Class with implicit dependency on other class

c++ - Linux线程执行流程

c++ - 重载 >> 使用字符串类

c++ - 为什么表达式的结果取决于表达式的放置位置?

c++ - 为什么私有(private)成员变量上不允许使用 decltype?

gcc - bin/arm-none-eabi-gcc 与 arm-none-eabi/bin/gcc

c - 我的程序出现段错误