#Include看不到其他文件中的标题

时间:2016-01-21 16:44:16

标签: c++ namespaces

这肯定是一个无聊的问题,我很抱歉浪费你的时间,但我无法找到任何解决方案(我在互联网上搜索了一下,但什么也没找到)。

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

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

例如,我在路径/ a / b / c下有一个Hello类,它包含在命名空间A / B / C中,而在/ a / b /下的Hi类位于命名空间A / B.在我的情况下,Hello课程没有"看到"上课嗨,但是上课你可以"看"你好。另外,如果我在文件夹a / d /中使用名称空间A / D的Bye类,那么类Bye不会""看"嗨,你好,反之亦然。 我的意思是什么"没有看到"是#include找不到标题,当我使用"使用命名空间......"没有父名称空间。

P.S。我希望我的英语是可以理解的(它不是我的母语),我上面写的内容很清楚。

2 个答案:

答案 0 :(得分:0)

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

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

这是您为编译器添加加载包含文件的路径的地方。

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

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

在visual studio中,“附加包含目录”默认基于当前项目目录。显然,您可以使用绝对路径和/或变量指定所需的任何内容。

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

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

答案 1 :(得分:0)

我找到了解决问题的方法。我在#include字符串“../../”中用作前缀,然后我可以将所有文件都包含在我的目录中。我不知道这是否是最好的事情,但它确实有效。