对C ++空指针使用NULL或nullptr?

时间:2014-07-29 08:22:35

标签: c++ null clang

我正在尝试在虚拟测试文件上进行一些Clang AST转储。这是我正在使用的命令行:

 clang -Xclang -ast-dump -fsyntax-only test.cpp

int * a = NULL;在我的test.c中被识别,但不在我的test.cpp中。

我也试过了int * a = nullptr;,但这也行不通。

我应该在命令行中更改某些选项吗?

3 个答案:

答案 0 :(得分:4)

使用此命令行: clang -std = c ++ 11 -Xclang -ast-dump -fsyntax-only test.cpp

现在您可以使用nullptr

OR

#include <cstddef>

现在您可以使用NULL

否则使用0

答案 1 :(得分:2)

C ++ 11之前的C ++允许NULL(如果您包含cstddef头文件)或0本身。

由于我的C背景,我倾向于选择NULL,我想明白地看到空指针和零值之间的区别。但是,有些人更喜欢使用0

在C ++ 11中引入nullptr解决了一些问题,包括在给定空指针(一个采用整数,或一个采用指针的指针)时调用的重载函数。

答案 2 :(得分:0)

只需使用0。

int *a = 0;

nullptr仅在C ++ 11中引入。将选项-std = c ++ 11传递给编译器。你的clang版本支持C ++ 11吗?关于NULL,请参阅here.