我测试地看到,NULL常量确实占据了指针的大小尺寸比较:NULL宏的大小与炭
ASSERT(sizeof NULL == sizeof(char*));
不过,我不小心写的,而不是执行以下操作:
ASSERT(sizeof NULL == sizeof char);
这应该编译,而是它给了我下面的错误:
error: expected expression before ‘char’
同样happene d我括在括号NULL
后
ASSERT(sizeof(NULL) == sizeof char);
不是空常数通常假设由其所关联到一个指针,它是等于0的宏被定义?声明显然是错误的,但据我所知,没有语法错误。 如果这是真的,为什么我收到编译错误?
NULL是0,所以其为int大小。 –
类型名称必须用“sizeof”的操作数括在括号中。 –
在C中NULL通常是(void *)0。 –