使用C中的#if进行转换
发布时间:2020-12-16 10:02:31 所属栏目:百科 来源:网络整理
导读:为什么此代码会出错: #include stdio.h#define Rep (int)6int main(){ #if Rep==6 printf("T"); #else printf("F"); #endifreturn 0;} 为什么它拒绝铸造? 它是’预处理器错误’还是’编译器错误’? 解决方法 这是预处理器错误.这是因为预处理器不了解如何
为什么此代码会出错:
#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("%dn",Y(Rep)); // prints 6 #endif return 0; } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |