在使用Qt Creator C++ 11时,nullptr是一个关键字吗?

13

我正在使用Qt Creator编写C++11代码。

"warning: identifier 'nullptr' is a keyword in C++11 [-Wc++0x-compat]"
"error: 'nullptr' was not declared in this scope"

这段代码在其他地方是可以运行的,相关部分如下:

... = nullptr;

可能出了什么问题?

这不已经是一个关键词了吗?它的作用域不是全局吗?


1
你是否正在编译为C++11?-std=c++11 - Joseph Mansfield
这只是一个警告,提醒用户代码可能无法与C++11兼容。 - Morwenn
2个回答

33

从QtCreator内部打开您的.pro文件,然后添加以下内容


QMAKE_CXXFLAGS += -std=c++0x

1
对于GCC >= 4.7,使用-std=c++11 - Mat
4
Qt 5 中的 CONFIG += c++11 表示启用 C++11 标准特性。 - Lol4t0
@user2348816:你上一个评论没有意义,Qt Creator使用Qt框架中的qmake作为构建系统。.pro文件是一个qmake配置文件。(哦,而且是Qt,不是QT。) - Mat
1
如果谈到.pro文件,那么你需要使用qmake。即使你不使用Qt库,也没有关系,因为qmake将生成MakeFile,而CONFIGQMAKE_CXXFLAGSqmake(构建系统)级别的标志,而不是Qt库级别的标志。 - Lol4t0
1
CONFIG 变量和 QMAKE_CXXFLAGS 变量有什么不同?好好想一想。 - Lol4t0
显示剩余6条评论

0

尝试将以下行添加到您的cpp源代码中

#ifndef _GXX_NULLPTR_T
#define _GXX_NULLPTR_T
   typedef decltype(nullptr) nullptr_t;
#endif 
/* C++11 */

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接