首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

关于头文件包含的一点疑问解决方法

2012-02-12 
关于头文件包含的一点疑问经常在程序中看到类似如下的句子:#ifndefFILENAME#defineFILENAME这个是怎么回事

关于头文件包含的一点疑问
经常在程序中看到类似如下的句子:
#ifndef   FILENAME
#define   FILENAME

这个是怎么回事,请各位给详细讲解一下!谢谢了!

[解决办法]
防止重复定义

[解决办法]
防止重复定义
[解决办法]
如果包含了当前的头文件,
会有一个 FILENAME 宏定义,
所以,
#ifndef FILENAME
#define FILENAME
的意义就是: 如果包含过当前的 h 文件(定义了 FILENAME 宏)那么就不再重复包含该 h 文件

这样就防止了重复包含 h 文件,
预防 例如 重复定义一类的错误 ~
[解决办法]
mark
[解决办法]
它的作用就是防止一个头文件被重复的编译.
我们还可以才用
#program once

[解决办法]
准确的说法是用来在编译期间防止头文件的重复包含

防止重复包含作用的范围是以c和cpp文件为单位的,即一个编译单元。


[解决办法]
简单地说,一个头文件可能被另一个文件include两次(直接或间接地)

//a.h
void func(){}

//b.h
#include "a.h "

//c.h
#include "a.h "
#include "b.h "

展开后,c.h变成
void func() {}
void func() {}
重复定义了
如果加了#ifdef,则c.h变成
#ifdef INCLUDE_A_H
void func() {}
#endif

#ifdef INCLUDE_B_H
#ifdef INCLUDE_A_H
void func() {}
#endif
#endif
第二个void func() {}会在预处理的时候被去掉,就没事啦

热点排行
Bad Request.