什么时候定义头文件要用到ifndef?头文件背重复引用会怎样

来源:百度知道 编辑:UC知道 时间:2024/05/31 09:16:45

条件指示符#ifndef 的最主要目的是防止头文件的重复包含和编译。
了解:条件编译当然也可以用条件语句来实现。 但是用条件语句将会对整个源程序进行编译,生成的目标代码程序很长,而采用条件编译,则根据条件只编译其中的程序段1或程序段2,生成的目标程序较短。如果条件选择的程序段很长,采用条件编译的方法是十分必要的。
#ifndef 标识1 //判断"标识1"是否定义,如果被定义则返回假,如果没有被定义则返回真。
/*举例:*/
语句1 #ifndef 标识1
语句2 #define 标识1
语句3 #endif
语句4 ……
语句5 ……
该段代码意思是:如果标识1没有被定义,则重定义标识1,即执行语句2、语句3;如果标识1已经被定义,则直接跳过语句2、语句3,直接执行语句4、语句5、……
/***********************************/
备注:#ifndef 和 #endif 要一起使用,如果丢失#endif,可能会报错。

无论什么时候都需要防止头文件被重复引用,头文件被重复引用会造成重复定义的编译错误。
所以都应该给头文件加上
#ifndef ...
#define ...
...
#endif

也可以使用下面的宏防止头文件重复引用:
#pragma once

任何时候定义.h头文件都应该定义ifndef,
不过在微软的开发工具上的#pragma once有等同的功能.

如果没有就很容易在编译时出错。