#ifndef 在头文件中的作用

#ifndef 

在头文件中的作用

 

在一个大的软件工程里面,

可能会有多个文件同时包含一个头文件,

当这些文件编译链接成

一个可执行文件时

 

,就会出现大量

重定义

的错误。在头文件中实用

#ifndef #define #endif

能避免头文件的重

定义。

 

方法:例如要编写头文件

test.h 

在头文件开头写上两行:

 

#ifdef _TEST_H 

#define _TEST_H//

一般是文件名的大写

 

头文件结尾写上一行:

 

#endif 

这样一个工程文件里同时包含两个

test.h

时,就不会出现重定义的错误了。

 

分析:当第一次包含

test.h

时,由于没有定义

_TEST_H

,条件为真,这样就会包含(执行)

#ifndef _TEST_H

 

#endif

之间的代码,

当第二次包含

test.h

时前面一次已经定义了

_TEST_H

条件为假,

#ifndef 

_TEST_H

 

#endif

之间的代码也就不会再次被包含,这样就避免了重定义了。

 

#ifndef __74HC595_H__ 

#define __74HC595_H__ 

 

 

#endif 

#ifndef _optimizedvector_h // if not define _optimizedvector_h 

#define _optimizedvector_h // then define _optimizedvector_h 

通俗点就是如果没定义

_optimizedvector_h

,那就定义

_optimizedvector_h

,防止重复编译

 

头文件中的

#ifndef

这是一个很关键的东西。

比如你有两个

C

文件,

这两个

C

文件都

include

了同一个头文件。而编

 

译时,这两个

C

文件要一同编译成一个可运行文件,于是问题来了,大量的声明冲突。

 

还是把头文件的内容都放在

#ifndef

#endif

中吧。不管你的头文件会不会被多个文件引

用,你都要加上这个。一般

 

格式是这样的:

 

 

#ifndef <

标识

>  

#define <

标识

>  

......  

#endif 

 

<

标识

>

在理论上来说可以是自由命名的,

但每个头文件的这个

“标识”

都应该是唯一的。标

识的命名规则一般是头

 

文件名全大写,前后加下划线,并把文件名中的“

.

”也变成下划线,

 

如:

stdio.h  

#ifndef _STDIO_H_  

#define _STDIO_H_  

......  

#endif 

你可能感兴趣的:(C/C++函数知识)