Min*_*mir 3 c casting compiler-errors c-preprocessor
为什么此代码会出错:
#include <stdio.h>
#define Rep (int)6
int main(){
#if Rep==6
printf("T");
#else
printf("F");
#endif
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是预处理器错误.这是因为预处理器不了解如何转换变量.您不能使用任何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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
509 次 |
| 最近记录: |