C语言 比较 NULL 宏的大小与字符的大小



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

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

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

ASSERT(sizeof NULL == sizeof char);

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

error: expected expression before ‘char’

在我NULL括在括号中后,也发生了同样的情况

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

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

"当操作数是类型名称时,必须将其括在括号中":C 大小运算符

在 C 语言中,NULL 通常定义为

#define NULL ((void*)0)

最新更新