加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

使用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;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读