本文目录一览:
C语言如何防止类型重复定义?
1、当1个C语言程序由 多个 源程序文件 组成时,由于每个 源程序文件 都有 #include ...#include "...h", 最终它们可能形成交叉 包含 和 重复包含 现象 而造成错误。
2、为了避免这种情况发生,可以 采用 定义宏 的方法 把各个头文件 包起来。
编译器 在正式编译的开始,现处理 宏 -- 也就是“预编译命令".
用 宏(#号开始的行) 把 头文件内容 包起来:
#ifndef _HEADER_One_H_ // 意思是:宏开始行,如果还没有定义 _HEADER_One_H_ 则 进入,否则退出
#define _HEADER_One_H_ //定义 _HEADER_One_H_//
header1.h
头文件内容
#endif // 宏结束行
C语言头文件避免重复包含的方法技巧
假定有以下几个头文件及其包含关系为:
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”
…..
c语言如何避免重复包含头文件?
#include 通常不会包含 .cpp 文件,如果包含的话,一般仅会包含如 static 的函数这样不会因为多次包含而导致链接问题的。
为了防止重复包含,头文件中都会有相应的处理,比如加上
#ifndef _STDIO_H_
#define _STDIO_H_
// 真正的头文件内容
#endif
这样在多次包含的时候,因为已经定义了 _STDIO_H_,所以第二次包含的内容会被忽略。
比较新的 C++ 编译器也支持 #pragma once,这样只要在头文件开头写上这一句,编译器就会在处理头文件的时候不包含多次了。