C语言:条件编译的标识符不能放在程序里面宏定义吗?

#ifdefBZ程序1;#else程序2;def=1;#endif然后我在中断里面放这样的程序:if(a=1)#defineBZ0else#defineBZ1能不能进这样... #ifdef BZ
程序1;
#else
程序2;
def=1;
#endif

然后我在中断里面放这样的程序:
if(a=1)#define BZ 0

else #define BZ 1

能不能进这样呀?我发现在调试的过程并不成功,是原本就不能这样定义还是我哪里错了?
展开
 我来答
zhangsonglin_c
高粉答主

2013-11-19 · 醉心答题,欢迎关注
知道大有可为答主
回答量:3.7万
采纳率:83%
帮助的人:7107万
展开全部
定义是可以的,叫做条件编译。
在再前面,加一个语句
#define BZ
编译的时候,就会编译“程序1”,而不编译“程序2”;
如果前面,以及include的文件里面都没有BZ的定义,编译时,就不会编译“程序1”,而是编译“程序2”

if else 就错了。

#ifdef BZ,仅仅是说BZ已经定义,与其值没有任何关系,你让他=0,=别的什么,不会影响#ifdef的行为。

条件编译是编译时的选项,与运行时无关,你不能在运行时做什么选择。

从if语句看,你的条件是a=1,不是BZ是否定义。
百度网友2aca9d6
2013-11-18 · 超过17用户采纳过TA的回答
知道答主
回答量:42
采纳率:0%
帮助的人:45.4万
展开全部
MACRO是在编译时展开的。
你的这种用法是说在运行时定义一个宏,那你定义的这个宏在什么时候展开呢?
不可能说,你程序在跑的过程中,自己把自己重新编译一下。
所以,你的这种用法,是对宏的误用,脱离了其本意。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Deme6625
2013-11-19
知道答主
回答量:23
采纳率:0%
帮助的人:6.4万
展开全部
应该是 if (1 == a)不是  if(a = 1)吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式