【发布时间】:2019-11-06 18:17:20
【问题描述】:
当我使用 clang++ 5.0 版编译以下程序时,会导致
错误:函数的初始化器看起来不像纯说明符
extern void print(void *ptr);
#define NULL __null
class IInterface
{
public:
virtual void method1() = NULL;
};
int main()
{
void *ptr = NULL;
print(ptr);
return 0;
}
clang 好像不支持__null?但是stackoverflow中的一些帖子建议clang支持__null。如果是这样,为什么我会收到此错误。有人可以建议这里发生了什么吗?
【问题讨论】:
-
你是 c++11 之前的吗?如果没有,为什么不使用
nullptr?如果是,最好添加适当的标签 -
这是一个 g++ 疣,这里 C++ 需要
=0。 -
只要在任何地方使用
nullptr。不要使用__null、0或NULLanywhere - 使用nullptr作为空指针常量。但是,为了声明一个纯垂直函数,语法是= 0,所以这就是你必须使用的。
标签: c++ c++14 clang++ llvm-clang