C语言头文件避免重复包含的方法技巧

Python014

C语言头文件避免重复包含的方法技巧,第1张

假定有以下几个文件及其包含关系为:

File1.h,file2.h,file3.h,file4.h,file5.h,main.cpp

那么:file3.h包含file1.h,file2.h,file4.h包含file1.h,file2.h,file5.h包含file3.h,file4.h。如许就会导致在file5中对file1和file2的反复包含,编译时就会报错。

解决方法:

1:应用#ifndef

#define

#endif

即每个文件在定义时都写成以下情势(以file1.h为例):

#ifndefH_FILE1

#defineH_FILE1

#include

#include

…..

#endif

File3.h:#ifndefH_FILE3

#defineH_FILE3

#include

#include

#inlcude”file1.h”

#include”file2.h”

…..

#endif

方法二:在每个文件的头部定义:#pragmaonce(用于解释本文件中的内容只应用一次)

例:fiel1.h:

#pragmaonce

#include

#include

…..

File3.h:

#pragmaonce

#include

#include

#include”file1.h”

…..

#include 通常不会包含 .cpp 文件,如果包含的话,一般仅会包含如 static 的函数这样不会因为多次包含而导致链接问题的。为了防止重复包含,头文件中都会有相应的处理,比如加上#ifndef _STDIO_H_#define _STDIO_H_// 真正的头文件内容#endif这样在多次包含的时候,因为已经定义了 _STDIO_H_,所以第二次包含的内容会被忽略。比较新的 C++ 编译器也支持 #pragma once,这样只要在头文件开头写上这一句,编译器就会在处理头文件的时候不包含多次了。