c++ - nullptr_t 未在 g++ 4.9.2 上定义

标签 c++ c++11 g++

我在使用 g++ 4.9.2 编译并设置了 -std=c++11 标志的 linux 项目上使用 C++ Rest SDK。

内部 C++ Rest SDK 会像这样检查 nullptr 是否存在:

#if defined nullptr_t
#define NEEDS_NULLPTR_DEFINED 0
#else
#define NEEDS_NULLPTR_DEFINED 1
#endif
#if NEEDS_NULLPTR_DEFINED
#define nullptr NULL
#endif

此检查在我的机器上失败导致 nullptr 被定义为 NULL,这会破坏之后的编译。我不太确定是 g++ 还是 C++ Rest SDK 导致了这个问题。

您是否知道为什么此 nullptr_t 检查在 g++ 4.9.2 中失败以及如何修复它?

编辑:

我向 C++ REST SDK 提交了一个问题:https://casablanca.codeplex.com/workitem/340

最佳答案

nullptr_t 不是由预处理器定义的,所以让预处理器检查它是行不通的。 nullptrg++-4.9.2中定义为-std=c++11,一个快速测试程序可以验证。

    int main() {
      std::nullptr_t i = nullptr;
    }

关于c++ - nullptr_t 未在 g++ 4.9.2 上定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28199162/

相关文章:

c++ - 设置用于打印 C++ 的 GDI 页面设置

C++,数组中的地址

c++ - 现代编译器优化如何将递归转换为返回常量?

来自编译器的c++类型错误消息,这是什么意思?

C++ 二叉搜索树实现不添加每个元素

c++ - 如何修改unordered_map中的值?

c++ - 按值捕获成员变量

c++ - 在复制初始化中,对复制构造函数的调用是显式的还是隐式的?

c++ - operator void*() 转换仍然是 C++ 库的一部分吗?

c++ - 在 C++ 中获取一个只有一次有效的锁