C语言——#ifndef

来源:互联网 发布:运动软件 佳明 编辑:程序博客网 时间:2024/06/05 03:03

#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_Htest代码段#endif

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

原创粉丝点击