免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 2659 | 回复: 15
打印 上一主题 下一主题

[实践] 头文件的包含问题 [复制链接]

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-06-16 17:28 |只看该作者 |倒序浏览
本帖最后由 goingstudy 于 2014-06-16 17:31 编辑

我想改一个开源项目的代码,在源代码下有这样的目录
  D1/, D2/, D3/ ... , include/
D1, D2, D3 目录下有.c 文件, include有A/, B/ 两个目录, A,B下都是头文件.h
我通过看代码发现,D1,D2,D3下的C文件引用头文件时都是#include <A/**.h>, #include <B/**.h>这种格式,
现在我想增加自己的功能需要在A下的某个头文件中引用B中的某个头文件,但是我这样写#include <B/**.h>总是报错找不到这个文件
请问这样应该怎样做?

求职 : 系统工程师等
论坛徽章:
5
技术图书徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28双子座
日期:2014-06-16 15:08:042015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
2 [报告]
发表于 2014-06-16 17:34 |只看该作者
CFLAGS应该可以搞定

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
3 [报告]
发表于 2014-06-16 17:36 |只看该作者
回复 2# qxhgd
GFLAGS不是用来设定编译时的选项的?不是很懂,应该怎么弄?

   

求职 : 系统工程师等
论坛徽章:
5
技术图书徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28双子座
日期:2014-06-16 15:08:042015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
4 [报告]
发表于 2014-06-16 17:38 |只看该作者
回复 3# goingstudy


  你查下就明白了。
CFLAGS可以指定编译搜索的路径。

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
5 [报告]
发表于 2014-06-16 17:44 |只看该作者
回复 4# qxhgd
但是我觉的是这样:
D1,D2, D3这几个目录引用include/A, include/B下的头文件时能够找到,说明A,B下的头文件路径已经可以被都到,但是A中的.h 引用B中的.h为什么就不行?

   

求职 : 系统工程师等
论坛徽章:
5
技术图书徽章
日期:2014-04-19 22:01:05天蝎座
日期:2014-05-09 13:49:28双子座
日期:2014-06-16 15:08:042015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:55:28
6 [报告]
发表于 2014-06-16 17:46 |只看该作者
#include <../B/**.h>或
#include ”../B/**.h“

这样试试呢?

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
7 [报告]
发表于 2014-06-16 17:48 |只看该作者
回复 6# qxhgd
试过了,因为引用的那个头文件还会引用B下的头文件,所以那样做后,会有其他的文件说是找不到

   

论坛徽章:
15
射手座
日期:2014-02-26 13:45:082015年迎新春徽章
日期:2015-03-04 09:54:452015年辞旧岁徽章
日期:2015-03-03 16:54:15羊年新春福章
日期:2015-02-26 08:47:552015年亚洲杯之卡塔尔
日期:2015-02-03 08:33:45射手座
日期:2014-12-31 08:36:51水瓶座
日期:2014-06-04 08:33:52天蝎座
日期:2014-05-14 14:30:41天秤座
日期:2014-04-21 08:37:08处女座
日期:2014-04-18 16:57:05戌狗
日期:2014-04-04 12:21:33技术图书徽章
日期:2014-03-25 09:00:29
8 [报告]
发表于 2014-06-16 18:51 |只看该作者
B中的头文件引用B中的头文件?那么不带路径就可以了?
另外,试试绝对路径?

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
9 [报告]
发表于 2014-06-17 08:54 |只看该作者
回复 8# humjb_1983
B中的引用B中的也是用了#include <B/*.h>这种形式
另外,试了一下,发现B中的引用A中的是没问题的,但是A中的引用B中的就有问题,不知道这是怎么设定的

   

论坛徽章:
1
IT运维版块每日发帖之星
日期:2015-12-20 06:20:00
10 [报告]
发表于 2014-06-17 09:49 |只看该作者
gcc -ansi -include stdint.h -Wall -W -Werror -S -o /dev/null -xc $i
发现是在执行这条语句时出的错, $i是代表的A目录下的.h文件, 这条语句是不是会把之前设定的路径覆盖掉?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP