我正在测试以查看 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)