在 C 中使用 #if 进行转换

2024-05-06

为什么这段代码会出错:

#include <stdio.h>
#define Rep (int)6
int main(){
     #if Rep==6
         printf("T");
     #else
         printf("F");

     #endif

return 0;
}
  1. 为何拒绝选角?
  2. 这是“预处理器错误”还是“编译器错误”?

这是一个预处理器错误。发生这种情况是因为预处理器不了解如何转换变量。您不能使用任何 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(使用前将#替换为@)

在 C 中使用 #if 进行转换 的相关文章

随机推荐