【发布时间】:2022-10-12 21:26:17
【问题描述】:
所以我在头文件中使用#include 时遇到了一些奇怪的问题。目标是使任何自定义或通用系统都集中在一个地方,我可以将其包含在我正在处理的任何文件中。到目前为止,这一直有效,但我最近注意到,我添加到其中的新头文件似乎无缘无故无法访问之前包含的任何代码,就像其他代码一样。它的设置有点像这样:
// includes.h
#include <cstdlib>
#include <iostream>
#include <vector>
#include <map>
#include <random>
#include <cmath>
#include <memory>
#include "a.h"
#include "b.h"
#include "c.h"
现在发生的事情是a.h 和b.h 可以使用它们上面包含的所有代码,而b.h 可以使用a.h 的代码,但似乎没有理由,c.h 不能使用任何包含的代码在它上面,但偶尔制作一个具有不同名称的全新头文件会起作用。我不知道是什么导致了这个问题,并且很想帮助理解这个问题。如果需要提供更多说明,请告诉我。
【问题讨论】:
-
我建议您让每个头文件都包含他们自己需要的内容。
-
请显示minimal reproducible example,猜测您的标题是从其他地方首先包含的
-
a.h、b.h和c.h之间是否存在相互依赖或循环依赖? -
我不知道如何提供可复制的示例,因为它似乎是随机发生的。我试图制作一个名为“World.h”的头文件,它无法访问includes.h文件中包含的任何内容,但是当我专门制作一个名为“test.h”的头文件来测试我遇到的这个问题时,我能够访问它之前包含的代码,尽管这两个文件实际上都是空的,除了一行尝试使用它之前的代码并且都以相同的方式包含在 include.h 文件中
标签: c++