[問題] 關於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