关于c++头文件冲突那点事

为啥会产生冲突:

主要原因:重复包含,要么文件重复,要么变量重复,这一重复,让编译器晕了,它不知道自己要找谁,然后它就跑路不干了

1、你中有我,我中有你型:

a.h中:

#include "b.h"

b.h中:

#include "a.h"

两个文件纠缠不清~~~~
解决方式:
1)引入头文件:#include “a.h”
可以写进.cpp文件中,大家分开走就好了,谁也别碍着谁,别问,就是这么神奇
2)如果不行,就在头文件中使用#ifndef ,//这个方法很顶哦

#ifndef xxx
#define xxx
class a{
};
#endif

这里的xxx随便取,不过一般用文件名,防止起冲突

2、多重包含型:

b.h中:

#include "a.h"

c.h中:

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

注意到这里的a.h被包含了两次,所以可能会产生冲突。
解决方式:
也是在头文件中使用#ifndef //说了它很强啦
具体细节参考上面

3、全局变量重复型:

a文件中有一个全局变量s:

int s=0;
class a{
};

b文件中也有一个全局变量s:

int s;
class b{
};

这个s可以出现在.h/.cpp文件中,只要它是个全局变量,而且a文件和b文件处于同一级下编译器就有可能报错:
multiple definition of ‘s’
first define here …
小声bb:在一个类文件中你写个毛的全局变量啊~
直接把这个全局变量写成类成员不就好了?反正你也只会在这个文件中用它。
解决方法:
1)写进类中,public或者private都是可以的
2)定义前面加个const //别人说的,没试过,不负责

Supongo que te gusta

Origin blog.csdn.net/weixin_41065922/article/details/121491915
Recomendado
Clasificación