在 g++ 中使用 nullptr 需要包含哪些头文件?
我正在使用 g++ 4.4.1 并想要使用 nullptr
,但我无法找到需要包含哪个头文件。它似乎也不是关键字,因为我尝试使用它被拒绝为
error: 'nullptr' was not declared in this scope
I am using g++ 4.4.1 and want to use nullptr
, but I am not being able to find which header file is required to be included. It does not seem to be keyword either, because my attempt to use it is rejected as
error: 'nullptr' was not declared in this scope
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
GCC 4.4.1 不支持
nullptr
。GCC 4.6.0 中添加了对
nullptr
的支持:http://gcc.gnu.org/gcc-4.6/changes.html
对于早期版本的 GCC,如果您想尝试
nullptr
,您可以尝试以下问题中的解决方法:可以在 GCC 中模拟 nullptr 吗?
GCC 4.4.1 does not support
nullptr
.Support for
nullptr
was added in GCC 4.6.0:http://gcc.gnu.org/gcc-4.6/changes.html
For earlier versions of GCC, if you want to experiment with
nullptr
you can try the workaround in this SO question:Can nullptr be emulated in GCC?
我建议不要使用上面定义的
nullptr
,因为它可能很危险。如果您想使用nullptr
,则以下语句应该为 true。但是,
sizeof(nullptr)
(如上面所定义)将不遵守此规则。它实际上会计算为sizeof(bad nullptr) = 1
。这是一个正确的实现。
I would recommend not using
nullptr
as defined above, because it can be dangerous. If you want to usenullptr
the following statement should be true.However,
sizeof(nullptr)
(as defined above) will not comply to this rule. It will actually evaluate tosizeof(bad nullptr) = 1
.This is a correct implementation.
我使用 -std=c++0x 来启用 gcc 4.6.3 的 nullptr 功能
I use -std=c++0x to enable the nullptr feature with gcc 4.6.3
如果您没有支持 C++11 的最新 gcc,请尝试使用 NULL 而不是 nullptr。
If you don't have the latest gcc which supports C++11 , try using NULL instead of nullptr.