预处理实现条件编译

1.请写出输出结果?
		
#if MAC_IF
	printf("MAC_IF = 1\n");
#elif MAC_IF
    printf("MAC_IF = 2\n");
#else
	printf("MAC_IF not defined!");
#endif

答案: MAC_IF not defined!
分析:#if 和 #elif 的常量表达式中出现了未定义的宏,它就被整数常量0所替代.


 

2.请写出输出结果?

#ifndef MAC_IF
	printf("MAC_IF not defined!\n");
#   define MAC_IF  //定义一个空的宏
#endif

#ifdef MAC_IF
	printf("MAC_IF has defined!\n");
#endif

答案:MAC_IF not defined!
     MAC_IF has defined!
分析:#ifndef测试宏是否还没有定义,如果是就进入它的代码块;
     #ifdef正好相反,它测试宏是否已经定义,如果是就进入它的代码块;

 

3.请写出下面的输出结果

#define MAX_STR 0

#if defined(MAX_STR)
	printf("MAX_STR is defined!\n");
#elif !defined(DEBUG) && defined(_cplusplus)
	printf("C++ DEBUG is OFF\n");
#endif

答案:MAX_STR is defined!
分析:1、只能在#if 和 #elif 表达式中使用defined操作符,此时它相当于#ifdef 和 #ifndef;
     2、如果宏已经被定义了,则defined表达式的值为1,否则为0;
     3、defined操作符比#ifdef 和 #ifndef更灵活,它可以创建复杂的表达式,如:
        #if !defined(DEBUG) && defined(_cplusplus)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值