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
能不能进这样呀?我发现在调试的过程并不成功,是原本就不能这样定义还是我哪里错了? 展开
程序1;
#else
程序2;
def=1;
#endif
然后我在中断里面放这样的程序:
if(a=1)#define BZ 0
else #define BZ 1
能不能进这样呀?我发现在调试的过程并不成功,是原本就不能这样定义还是我哪里错了? 展开
3个回答
展开全部
定义是可以的,叫做条件编译。
在再前面,加一个语句
#define BZ
编译的时候,就会编译“程序1”,而不编译“程序2”;
如果前面,以及include的文件里面都没有BZ的定义,编译时,就不会编译“程序1”,而是编译“程序2”
if else 就错了。
#ifdef BZ,仅仅是说BZ已经定义,与其值没有任何关系,你让他=0,=别的什么,不会影响#ifdef的行为。
条件编译是编译时的选项,与运行时无关,你不能在运行时做什么选择。
从if语句看,你的条件是a=1,不是BZ是否定义。
在再前面,加一个语句
#define BZ
编译的时候,就会编译“程序1”,而不编译“程序2”;
如果前面,以及include的文件里面都没有BZ的定义,编译时,就不会编译“程序1”,而是编译“程序2”
if else 就错了。
#ifdef BZ,仅仅是说BZ已经定义,与其值没有任何关系,你让他=0,=别的什么,不会影响#ifdef的行为。
条件编译是编译时的选项,与运行时无关,你不能在运行时做什么选择。
从if语句看,你的条件是a=1,不是BZ是否定义。
展开全部
MACRO是在编译时展开的。
你的这种用法是说在运行时定义一个宏,那你定义的这个宏在什么时候展开呢?
不可能说,你程序在跑的过程中,自己把自己重新编译一下。
所以,你的这种用法,是对宏的误用,脱离了其本意。
你的这种用法是说在运行时定义一个宏,那你定义的这个宏在什么时候展开呢?
不可能说,你程序在跑的过程中,自己把自己重新编译一下。
所以,你的这种用法,是对宏的误用,脱离了其本意。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
应该是 if (1 == a)不是 if(a = 1)吧
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询