#if sizeof(int) != 4
/* do something */
在内部使用 sizeof#if
在里面时不工作#define
它有效,为什么?
#define size(x) sizeof(x)/sizeof(x[0]) /*works*/
没有什么是邪恶的——一切都可能被滥用,或者在你的情况下被误解。这sizeof
运算符是编译器功能,但编译器功能不可用于预处理器(在编译器参与之前运行),因此不能在#if
预处理器指令。
然而,当你说:
#define size(x) sizeof(x)/sizeof(x[0])
并使用它:
size(a)
预处理器执行传递给编译器的文本替换:
sizeof(a)/sizeof(a[0])
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)