变量在宏中与一个立即数进行比较

liuzu2016 2012-07-02 05:21:04

int a=1;
#if a==1
#define str "hello"
#else
#define str "world"
#endif

在vs中时, 程序是做了else这里。

a==1是true的啊,为什么 会 走else那块的代码呢
...全文
87 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qiang81020 2012-07-02
  • 打赏
  • 举报
回复
要输出world,
#define a 0
qiang81020 2012-07-02
  • 打赏
  • 举报
回复
。。。。这也行???

执行else就对了,编译的时候a是未定义的。。所以执行else。运行的时候才会执行a=1赋值操作

#include <stdio.h>

#define a 1

#if a==1
#define str "hello"
#else
#define str "world"
#endif

void main()
{
printf ("%s\n", str);
}

morebread 2012-07-02
  • 打赏
  • 举报
回复
#define是不能这样使用的

你代码里的#if和#else对#define根本就不起作用,你实际上就等于define了2次str,编译器以最后一次为准,也就是world

69,322

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧