比较NULL宏的大小和char的大小

时间:2014-03-02 12:28:19

标签: c null sizeof

我正在测试看到NULL常量确实占用了指针的大小:

ASSERT(sizeof NULL == sizeof(char*));

但是,我不小心写了以下内容:

ASSERT(sizeof NULL == sizeof char);

应该编译,但它给了我以下错误:

error: expected expression before ‘char’

在括号中隐藏了NULL之后发生了同样的事情

ASSERT(sizeof(NULL) == sizeof char);

NULL常量是否通常假定由一个宏定义,该宏将它与一个等于0的指针相关联?该陈述显然是错误的,但据我所知,没有语法错误。 如果这是真的,为什么我收到编译错误?

1 个答案:

答案 0 :(得分:1)

“当操作数是类型名称时,必须用括号括起来”:C sizeof operator

在C中,NULL通常定义为

#define NULL ((void*)0)