[问题] 关于head file reference的问题

楼主: MaxHaru (懂得放手..才是王道)   2015-02-11 14:37:36
开发平台(Platform): (Ex: VC++, GCC, Linux, ...)
Keil C
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):
因为专案管理的关系,
会在一个head file中去include 所有的有用到的head file,
Ex: All.h
#include A.h
#inculde B.h
...
现在如果A.h与B.h会去reference对方的define
Ex: A.h
#define AA ...
#if BB
...
#endif
B.h
#define BB ...
#if AA
...
#endif
在这种前题下, compile会出现warning C322: unknown identifier
想问一下, 一般遇到这样的问题都怎么解决,
如果这样的安排在C中是不允许的,
大家又是习惯怎么去规划define的呢?
谢谢.
作者: wenyonba (射后不理很XX啊!!!!)   2015-02-11 14:43:00
A.h B.h 也要互相 include 才行吧不然先处理 A 的时候找不到 B,反之亦然,不是吗?
作者: littleshan (我要加入剑道社!)   2015-02-11 14:55:00
合并成一个.h这种cyclic dependency表示你的模组切割是有问题的
作者: longlongint (华哥尔)   2015-02-11 15:40:00
class A; class B;
作者: TobyH4cker (Toby (我要当好人))   2015-02-11 18:06:00
#ifndef AA#include "A.h"#endif你用 #if 是判断后面的条件为True或False,而你又指定一个没有被定义内容的identifier,所以出现错误我漏了一个 #define AA 在 #ifndef 成立区块不对,我给一下完整的/* A.h */#ifndef _A_H#define _A_H #include "B.h" // HEADER DEFINITION #endif /* B.h */ 同理/* all.h */ #include "A.h" #include "B.h"
作者: Killercat (杀人猫™)   2015-02-11 21:55:00
......回个文吧
作者: damody (天亮damody)   2015-02-11 22:54:00
为什么要推那么长
作者: PkmX (阿猫)   2015-02-12 07:42:00
看到推文都觉得好累 中间还要等五秒...
作者: Push5F (帐号已卖)   2015-02-12 23:05:00
先搞懂 .c .h差异 0.0
楼主: MaxHaru (懂得放手..才是王道)   2015-02-13 13:18:00
感谢各位的回应..

Links booklink

Contact Us: admin [ a t ] ucptt.com