fel*_*322 14 c sizeof c-preprocessor
我知道sizeof是一个运算符,它在编译时被计算为整数常量.但它似乎不能在#if预处理器指令中使用,如:
#if 4 == sizeof(int)
typedef int Int32;
#endif
Run Code Online (Sandbox Code Playgroud)
(cygwin-gcc 3.4.4以及Visual C++ 6.0报告编译错误)
为什么不允许这样的使用?
Ric*_*chN 19
因为sizeof
在编译时评估指令在编译之前进行评估,并且执行该操作的部分不是编译器,因此它将无法理解什么sizeof
意思.
kgi*_*kis 10
sizeof是C运算符.您不能在预处理程序指令中使用C代码.在编译发生之前评估预处理程序指令.