C语言重复包括头文件(C语言的头文件)
本文讲的是C语言中头文件的重复,以及C语言中头文件对应的知识点。希望对你有帮助,也别忘了收藏这个站点。
这篇文章的列表: 1.C如何避免重复包含头文件? 2.C语言头文件中避免重复包含的方法和技巧。 3.如何利用C语言头文件中重复包含的问题? C如何避免重复包含头文件? #include通常不包含。cpp文件,如果有,一般也只包含static之类的函数,不会因为多重包含而导致链接问题。
为了防止重复包含,头文件中会有相应的处理,比如添加
#ifndef _STDIO_H_
#define _STDIO_H_
//真实头文件内容
#endif
这样在多次收录时,因为已经定义了_STDIO_H_所以第二次收录的内容会被忽略。
较新的C编译器也支持#pragma once,所以只要在头文件的开头写这句话,编译器在处理头文件时就不会多次包含。
避免C语言头文件中重复包含的方法和技巧 假设有以下头文件,它们的包含关系是:
文件1.h,文件2.h,文件3.h,文件4.h,文件5.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
#定义
#endif
也就是每个文件在定义的时候,都是按照以下情况来写的(以file1.h为例):
#ifndefH_FILE1
#defineH_FILE1
#包括
#包括
… ..
#endif
File3.h:#ifndefH_FILE3
#defineH_FILE3
#包括
#包括
#包含“文件1.h”
#包含“文件2.h”
… ..
#endif
方法二:在每个文件的文件头定义:#pragmaonce(只用来解释一次这个文件中的内容)。
示例:fiel1.h:
#pragmaonce
#包括
#包括
… ..
文件3.h:
#pragmaonce
#包括
#包括
#包含“文件1.h”
… ..
c语言头文件包含重复问题。如何使用inndef? #ifndef BASE_H//如果没有定义BASE_H,编译下面的代码。
#define BASE_H//定义这个宏
#endif
此编译指令用于每个。h文件。即使多次使用#include,也不会重复包含。
#ifndef BASE_H
如果#包括这个。H文件第一次,BASE_H没有定义,所以这个。H文件包含在内参与编译,同时定义了BASE_H。
后续#包括这个。H文件,因为BASE_H已经定义了,所以对应的#endif之前的代码不参与编译,所以不会有两个基本的信息结构。
-
除了包含头文件,ifdef还会用在其他地方,比如判断编译环境,
#ifndef _WIN64
#定义NULL 0
#否则
#定义NULL 0LL
#endif
对于C语言重复包括头文件的介绍就到此为止吧。感谢您花时间阅读本网站的内容。不要忘记在这个网站上搜索更多关于C语言头文件和C语言重复包括头文件的信息。
最后更新于 2023-10-07 09:25:59 并被添加「」标签,已有 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
相关文章