我有一个C ++项目,我喜欢组织的mycode,但是当我把所有内容放在不同的目录(标题和源文件保存在一起)时,我无法包含来自其他文件夹的标题。 例如:我有两个名为" FooException"和#34; ContentProvider",显然进入单独的目录,FooException是一个例外,ContentProvider是一个实用程序。当然,我将它们放在不同的文件夹中,但是当我尝试在ContenProvider中包含FooException时它不起作用并且说它无法找到源文件。有谁遇到过这样的问题?有什么建议? 在此先感谢新年快乐!
UPD: 好的,人们建议查看#include<>之间的差异和#include""而那仍然没有帮助。虽然我能够从Main.cpp访问任何文件,但无论我在ContentProvider类和FooException类中都无法访问文件,无论我使用哪种#include-statement。而且,无论我使用哪种语句,我都可以从项目的任何一点访问SFML库。是否与我项目中" include" -directory中的SFML目录有关?
UPD 2: 好的,问题解决了,它与#include<>无关和#include""。我只需要把#34; .. \"在写出路径名称之前,它工作得很漂亮。我标出了最适合的答案。
答案 0 :(得分:3)
您必须在IDE / Makefile中正确配置include header paths
设置。简而言之,为了能够搜索特定的头文件,编译器必须知道在哪里查找它。例如,在g++
中,我们使用-I
标志来提供各种包含路径。
例如,
$g++ -I/usr/abc/A/ main.cpp
在main.cpp中,包含a.h
,此文件的aboslute路径为/usr/abc/A/a.h
。
答案 1 :(得分:0)
你可以:
#include "../folderName/A.h"
"topLevelDirectory/A.h"
我个人不喜欢2.因为如果您的文件层次结构发生变化,您将不得不修改源代码以更改相对路径。