nullptr无法用gcc 4.8识别

时间:2015-08-26 15:19:58

标签: c++ c++11 gcc

在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是关键字,那么无法识别nullp?

我不明白,如果你有任何想法......

1 个答案:

答案 0 :(得分:4)

您没有调用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,该文件可能包含以前环境的缓存属性。

如果失败,请打开详细输出,以便真正查看正在进行的操作,调用的二进制文件以及操作方式。