您的位置:首页 > 其它

#ifndef 在头文件中的作用

2015-08-22 10:29 363 查看
#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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: