C:前缀在#include中
假设我们在目录C:前缀在#include中,c,gcc,makefile,C,Gcc,Makefile,假设我们在目录project1和project2中有两个C项目,每个项目都有自己的include目录。 project1/src中的源是否可以包含来自project2的头文件,如下所示:#include,其中def.h存在于project2/include/def.h中 谢谢 编辑:为了清楚起见,假设您有以下两个项目: project1/ - Makefile - include/def.h - main.c project2/ - Makefile - include/d
project1
和project2
中有两个C项目,每个项目都有自己的include
目录。
project1/src
中的源是否可以包含来自project2
的头文件,如下所示:#include
,其中def.h
存在于project2/include/def.h
中
谢谢
编辑:为了清楚起见,假设您有以下两个项目:
project1/
- Makefile
- include/def.h
- main.c
project2/
- Makefile
- include/def.h
- main.c
问题是,您能否在project1中引用包含此类内容的project2的标题(例如project1/main.c
):
#包括
答案是否定的,因为是。从技术上讲,不,你不能保持现状
如果你真的想要:
#include <project2/def.h>
您将从项目1中以#include
的形式将其包括在内
或者,您可以创建包含#include project2/include/def.h
的标题project2/def.h
,然后调用-I.
,其中
是project2
源代码上方的目录
在我看来,更好的解决方案是第一个,因为它不依赖于知道如何命名
project2
sources目录(可以本地称为FooBar,您仍然可以<代码> -/PATT/to/FoABAR /Copy/< /Calp>和'````./p>文件不属于它们所属的项目,所以是的。把它看作是一个聚合关系,使用绝对文件路径,甚至是包含语句中的一个构造良好的相对文件路径,也可以考虑使用”如果您构建了复杂的相对文件路径,请在文件名上使用分隔符。您可能还需要查看gcc/clang中的-I
标志和msvc中的/I
。此外,您提到的确切情况也不起作用,因为源文件位于project1/src中。您必须使用../@cup,请仔细阅读,直到您理解真正的任务不要用零熵注释来回答。谢谢。这就是我所想的,可惜的是,我们不能将命名空间包含目录。你不能仅仅在包含语句中增加文件路径,不管头文件在哪里吗?@ NICOMP,我想你最终会有绝对路径(我认为是“邪恶的”)。或跨项目文件夹结构的相对路径(我认为没什么更好的)。
#include <project2/def.h>
project2/include/project2/def.h