【问题标题】:Using Qt Creator C++ 11, nullptr is keyworded?使用 Qt Creator C++ 11,nullptr 是关键字?
【发布时间】:2013-05-06 18:31:01
【问题描述】:

我正在通过 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;

可能是什么问题?

这还不是关键字,不是全局作用域吗?

【问题讨论】:

  • 你编译为 C++11 吗? -std=c++11?
  • 这只是一个警告,以防止用户代码可能不适用于 C++11。

标签: c++ c++11 qt-creator nullptr


【解决方案1】:

从 QtCreator 中打开您的 .pro 文件并添加此文件

QMAKE_CXXFLAGS += -std=c++0x

【讨论】:

  • -std=c++11 对于 GCC >= 4.7。
  • @Mat AFAK 无论您使用什么标志,它都会触发相同的功能集,但c++0x 它也与 gcc 4.6.x 等旧版本兼容
  • CONFIG += c++11 for Qt 5
  • 如果谈论.pro文件,那么你使用qmake。如果您使用 Qt 库,这甚至不重要,因为qmake 将生成MakeFileCONFIGQMAKE_CXXFLAGSqmake(构建系统)级别标志,而不是Qt library 级别标志
  • CONFIG 变量与QMAKE_CXXFLAGS 变量有何不同?想想吧。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2013-07-04
    • 2013-06-01
    • 1970-01-01
    • 2012-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-02
    相关资源
    最近更新 更多