#Include 在其他文件中看不到标头
#Include doesn't see headers in others files
这肯定是一个菜鸟问题,很抱歉浪费你的时间,但我找不到任何解决方案(我在互联网上搜索了一下,但一无所获)。
我在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 字符串"../../",然后我可以将所有文件包含在我的目录中。我不知道这是否是最好的做法,但它奏效了。
- 从函数角度看ID到文件路径的内部与外部映射
- 我不断收到 [错误] ID 返回 1 退出状态错误,但看不到问题所在
- C++驱动程序看不到头文件
- 看不到文件'SDL2.lib'
- WSL 看不到环境变量
- 为什么我的 FreeRTOS 任务看不到类成员?
- Google Colab 看不到 .so 文件
- 为什么即使链接器找到目标文件,我的程序也看不到函数定义?
- SFML - 代码::块看不到 sfml 图形(等)文件
- Visual Studio 看不到.cpp文件
- Eclipse 在检查语法时看不到包含文件,但在构建或运行应用程序时会看到
- 程序在 Visual Studio 中启动时看不到文件
- MSVC 2003 看不到嵌套包含文件中的任何定义
- C++ .cpp文件看不到来自 .h 的变量
- 服务器应用程序看不到具有相对路径的文件
- 为什么我们看不到 #include 粘贴到当前文件中的文本?
- 头文件看不到其他头标识符
- Qt创建者看不到QWT头文件
- C++ 为什么链接器看不到我的文件?
- 为什么C++看不到我的 lua 脚本文件?