#Include 在其他文件中看不到标头

#Include doesn't see headers in others files

本文关键字:看不到 文件 其他 #Include      更新时间:2023-10-16

这肯定是一个菜鸟问题,很抱歉浪费你的时间,但我找不到任何解决方案(我在互联网上搜索了一下,但一无所获)。

我在Visual Studio 2013中有一个控制台应用程序项目,我有许多文件夹,我在其中放置了各种.h和.cpp文件。在这些文件中,我使用命名空间对类进行分组。

问题是我不能在当前.cpp或.h文件中包含父目录中的标头。

例如,我在路径/a/b/c 下有一个 Hello 类,它包含在命名空间 A/B/C 中,在命名空间 A/B 中有一个/a/b/下的 Hi 类。在我的情况下,Hello 类不会"看到"类 Hi,但类 Hi 可以"看到"类 Hello。另外,如果我在文件夹 a/d/中具有命名空间 A/D 的 Bye 类,则 Bye 类不会"看到"类 Hi 和 Hello,反之亦然。我所说的"看不到"的意思是 #include 找不到标头,并且当我使用"使用命名空间......"时没有父命名空间。

附言我希望我的英语是可以理解的(这不是我的母语),并且我上面写的内容很清楚。

在"解决方案资源管理器"窗口中。右键单击您的项目,然后从菜单中选择属性。

在 C/C++ -> 常规设置中,第一个字段是"其他包含目录"

您可以在此处为编译器添加路径以加载包含文件。

当编译器遇到 #include 语句时,它会尝试打开指定的文件。如果文件是绝对路径,则它仅尝试从该特定绝对路径加载。

如果文件是相对路径,它将尝试首先从正在编译的文件的目录加载。如果在与 c/cpp 文件相同的文件夹中找不到该文件,编译器将尝试其"包含目录"列表中的每个路径来查找该文件。

在Visual Studio中,默认情况下,"其他包含目录"基于当前项目目录。显然,您可以使用绝对路径和/或变量指定所需的任何内容。

对于您的示例,您可能希望包含类似以下内容的目录:

a/b;a/b/c;a/d

我找到了解决问题的方法。我在 #include 字符串"../../",然后我可以将所有文件包含在我的目录中。我不知道这是否是最好的做法,但它奏效了。