为什么这段代码会出错:
#include <stdio.h>
#define Rep (int)6
int main(){
#if Rep==6
printf("T");
#else
printf("F");
#endif
return 0;
}
- 为何拒绝选角?
- 这是“预处理器错误”还是“编译器错误”?
这是一个预处理器错误。发生这种情况是因为预处理器不了解如何转换变量。您不能使用任何 C 代码#if
,只是简单的数字,或扩展为数字的宏。
如果无法修改Rep
,您可以使用辅助宏来解决此问题,该宏从一开始就删除了转换:
#include <stdio.h>
#define X(x)
#define Y(x) X x
#define Rep (int)6
int main(void) {
#if Y(Rep) == 6
printf("%d\n", Y(Rep)); // prints 6
#endif
return 0;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)