【C】 #ifndef条件编译

#ifndef
解释:if not defined
类型:条件编译(预处理共分:宏定义、文件包含和条件编译3种)
意义:可根据是否已定义一个变量来进行分支选择,一般用于调试。
作用:
1、防止头文件的重复包含和编译
2、便于程序调试
使用方法:

#ifndef    x  /*先测试x是否被宏定义过*/
#define    x
程序段1  /*若x没有被宏定义过,定义x,并编译程序段1*/
#else
程序段2  /*若x已定义,则编译程序段2,忽略程序段1*/
#endif   /*结束if语句*/

注意:#ifndef的效果是防止一个源文件两次包含头一个头文件。
若有一个C源文件,它包含了很多头文件,如:A头文件和B头文件,而头文件B又包含了头文件A。则最终的效果是:该源文件包含了2次A头文件。若在头文件A里定义了结果体或类类型,则编译时会报大量的重复定义错误。
如:要编写头文件test.h
在头文件开头写两行:
#ifndef __TEST_H
#define __TEST_H
文件结尾写上:
#endif
即:

#ifndef  __TEST_H
#define __TEST_H
test代码段
#endif

这样一个工程文件里同时包含了2个test.h,也不会出现重定义的错误。
分析:
第一次编译,__TEST_H未被定义,定义__TEST_H.
第二次编译,__TEST_H已被定义,不再宏定义__TEST_H,也不执行test代码段。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值