gpt4 book ai didi

在 C 中使用 #if 进行转换

转载 作者:太空狗 更新时间:2023-10-29 16:01:05 25 4
gpt4 key购买 nike

为什么这段代码报错:

#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;
}

关于在 C 中使用 #if 进行转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36803772/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com