#include 路径的问题

asdggododod123 2010-11-25 10:55:36
一个项目下有 多个文件夹,每个文件夹下有每个模块类的头文件和源文件

#include "" 如何加载项目根目录的头文件? 比如项目主目录有 一个 1.h 头文件 如何才能加载它? 当前源文件在一个 文件夹 1下面

没看懂题目麻烦说说如何表示上级目录和本项目的根目录 ?
还有个问题是 在项目文件夹1下 一个CPP原文件如何加载 自己文件夹1下的头文件? 需要改变目录不?
...全文
1978 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
wmswxpmyl 2010-11-26
  • 打赏
  • 举报
回复
可以在tool->options->directiors->include file
菜单下将你包含头文件的路径一次性加上去

这样就免得一个个加了啊 !!!!

Eleven 2010-11-26
  • 打赏
  • 举报
回复
[Quote=引用 13 楼 jennyvenus 的回复:]
C/C++ code
#include "..\\..\\..\\..\\include1\\include2\\include3\\include.h"
[/Quote]
呵呵,我也是这样写的,直接#include ".\\...",或者"..\\..."
花熊 2010-11-26
  • 打赏
  • 举报
回复 1
.\是当前目录
..\是上一级目录,
如果你的项目当前目录是D:\\XXX\\test1,和test1并列的还有一个test2目录,你想包含test2中的a.h文件到项目中,可以用#include"..\\test2\\a.h",先进上一级目录,再到test2目录,里面就有a.h
用户 昵称 2010-11-26
  • 打赏
  • 举报
回复
#include "..\\..\\..\\..\\include1\\include2\\include3\\include.h"
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
因为c++好久没弄,也本就菜。不敢乱说。
按你说的做了测试,发现还是没问题。。。
b1.h中写#include "..\a1.h"
然后b1.cpp中#include "b1.h"
在c1.cpp中#include "..\b1.h"
没任何问题。
#include都是相对当前文件的,至于被谁引用。貌似没关系。
arong1234 2010-11-25
  • 打赏
  • 举报
回复
这不是风格问题,而是根本不能工作

考虑三层目录结构a\b\c
a中有个头文件a1.h
b中有个头文件b1.h,他包含a1.h
b中有个b1.cpp
c中有c1.cpp
b1.cpp, c1.cpp都包含b1.h
为了使b1.cpp正确找到a1.h,b1.h中必须写成
#include "..\a1.h"
为了使c1.cpp能找到a1.h
你必须写成#include "..\..\a1.h"

在这种情况下,b1.h根本不可能正确写出#include

[Quote=引用 10 楼 wuyazhe 的回复:]
引用 8 楼 arong1234 的回复:
在a目录中的cpp文件认为..是a的父目录
在a\b中的cpp文件认为..是a
如果a中的一个头文件以..\1.h包含这个头文件
a\b中的一个cpp包含a\中的头文件,则无法找到..\1.h,因为它会尝试在a\中找


囧,再深入一层当然写
#include "..\..\1.h"
这样了。没问题啊。看到很多开源代码这么写哦。当然,用……
[/Quote]
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 arong1234 的回复:]
在a目录中的cpp文件认为..是a的父目录
在a\b中的cpp文件认为..是a
如果a中的一个头文件以..\1.h包含这个头文件
a\b中的一个cpp包含a\中的头文件,则无法找到..\1.h,因为它会尝试在a\中找
[/Quote]

囧,再深入一层当然写
#include "..\..\1.h"
这样了。没问题啊。看到很多开源代码这么写哦。当然,用$(SolutionDir)\a\b这种写法也挺好,这貌似就是绝对路径把。$(SolutionDir)编译时候会描述为解决方案的绝对路径。
arong1234 2010-11-25
  • 打赏
  • 举报
回复
绝对路径是自己玩程序单干时才行的

当你是团队合作时,你是不一定可以控制每个touch这个代码的人都把工程放在头一个位置的[Quote=引用 5 楼 wltg2001 的回复:]
直接写绝对路径就行了,如果要用相对路径的话,一般用..表示上级目录,用.表示本级目录。
[/Quote]
arong1234 2010-11-25
  • 打赏
  • 举报
回复
在a目录中的cpp文件认为..是a的父目录
在a\b中的cpp文件认为..是a
如果a中的一个头文件以..\1.h包含这个头文件
a\b中的一个cpp包含a\中的头文件,则无法找到..\1.h,因为它会尝试在a\中找

[Quote=引用 6 楼 wuyazhe 的回复:]
引用 4 楼 arong1234 的回复:
在不同目录中的cpp文件对..的解释是不一样的,在绝大部分情况下,使用相对路径都不是好主意

引用 1 楼 wuyazhe 的回复:
#include "..\1.h"

这里可以用相对路径,或绝对路径。

愿闻其详。
[/Quote]
wltg2001 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 wuyazhe 的回复:]
引用 4 楼 arong1234 的回复:
在不同目录中的cpp文件对..的解释是不一样的,在绝大部分情况下,使用相对路径都不是好主意

引用 1 楼 wuyazhe 的回复:
#include "..\1.h"

这里可以用相对路径,或绝对路径。

愿闻其详。
[/Quote]
他的意思是因为CPP位于不同的目录中,所以..所代表的实际目录是不同的。
我同意他的后面的说法,用相对路径不是个好主意,写绝对路径很方便,而且绝不会出错。
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 arong1234 的回复:]
在不同目录中的cpp文件对..的解释是不一样的,在绝大部分情况下,使用相对路径都不是好主意

引用 1 楼 wuyazhe 的回复:
#include "..\1.h"

这里可以用相对路径,或绝对路径。
[/Quote]
愿闻其详。
wltg2001 2010-11-25
  • 打赏
  • 举报
回复
直接写绝对路径就行了,如果要用相对路径的话,一般用..表示上级目录,用.表示本级目录。
arong1234 2010-11-25
  • 打赏
  • 举报
回复
在不同目录中的cpp文件对..的解释是不一样的,在绝大部分情况下,使用相对路径都不是好主意[Quote=引用 1 楼 wuyazhe 的回复:]
#include "..\1.h"

这里可以用相对路径,或绝对路径。
[/Quote]
coolcoffee4051982 2010-11-25
  • 打赏
  • 举报
回复
路径不变的话,可以写出绝对路径 ,
也可把头文件拷到文件夹1中,
arong1234 2010-11-25
  • 打赏
  • 举报
回复
当你项目有多层目录结构你是无法通过加相对路径来包含的
你需要把你项目中所有的有头文件的目录都加到编译器Additional Include directories中(在工程设置中慢慢找)
你可以使用SolutionDir来做相对路径的起点。例如你的目录在sln文件所在目录的两极子目录a\b中,你应该在那里加$(SolutionDir)\a\b
兔子-顾问 2010-11-25
  • 打赏
  • 举报
回复
#include "..\1.h"

这里可以用相对路径,或绝对路径。

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧