GCC 4.8无法识别Nullptr

nullptr unrecognized with gcc 4.8

本文关键字:识别 Nullptr GCC      更新时间:2023-10-16

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

scl enable devtoolset-2 bash

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

gcc (GCC) 4.8.2 20140120 (Red Hat 4.8.2-15) Copyright (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,该文件可能包含以前环境的缓存属性。

如果做不到这一点,请打开详细输出,以便可以真正地看到发生了什么,调用了哪些二进制文件,以及如何调用。