一、说明案例
1.有一个a.h头文件被b.h包含
2.有一个a.h头文件被c.h包含
3.有一个c.cpp包含c.h和b.h
那么上述c.pp是不是两次包含了a.h,这在设计中会出现什么问题?怎么解决?
二、c语言中,如何避免头文件.h文件被重复包含
方法一:使用预处理宏来防止重复包含
通过定义一个宏来控制头文件的包含,在头文件的开始部分定义一个宏,
然后在文件的末尾取消定义这个宏。如果在其他地方再次包含这个头文件的时候,
由于宏定义已经被定义,编译器会跳过文件的第二次包含
// myheader.h
#ifndef MYHEADER_H
#define MYHEADER_H
// 头文件的内容
void myFunction();
#endif // MYHEADER_H
上述代码中
#ifndef MYHEADER_H
#define MYHEADER_H
#endif // MYHEADER_H
的作用就是为了解决头文件被重复包含的情况。
#ifndef、#define 和 #endif 指令一起工作,确保头文件内容只被包含一次。MYHEADER_H 是一个唯一的标识符,通常是文件名的大写形式加上一个前缀,以确保唯一性。
方法二:使用#pragma once 指令
下面是被包含的头文件.h的写法
// myheader.h
#pragma once
// 头文件的内容
void myFunction();
上面没有定义宏,而是使用了一条编译指令,告诉工具,本头文件只会被编译一次。