我知道sizeof是一个运算符,它在编译时被计算为整数常量。 但它似乎不能在#if预处理器指令中使用,如:
#if 4 == sizeof(int)
typedef int Int32;
#endif
(cygwin-gcc 3.4.4以及Visual C ++ 6.0报告编译错误)
为什么不允许这样的使用?
答案 0 :(得分:19)
因为sizeof
在编译时被评估,而指令在编译之前被评估,并且执行该操作的部分不是编译器,所以它将无法理解{{1}意思是。
答案 1 :(得分:10)
sizeof是一个C运算符。您不能在预处理程序指令中使用C代码。在编译之前评估预处理程序指令。