2013-11-28 338 views
0

如何解決這種依賴關係?解決Makefile依賴關係

在我的項目中,每個文件都包含具有相同名稱的頭文件。

頭文件包含另一個頭文件(依賴關係)。

而且畢竟我有這個依賴關係:

parser.h -> lexer.h -> str.h 
parser.h -> tables.h -> bst.h -> str.h 

所以,當我不包括str.hbst.h,我有「未知類型名稱」的錯誤。

當我包括str.h我有'類型重定義'錯誤。

據我所知,這可以通過Makefile中的正確依賴來解決。

在此之前,我是最簡單的Makefile(對象列表,一個命令)。

另外,什麼是解決循環依賴最簡單的方法?

instructions.h -> bst.h 
bst.h -> instructions.h 

所以我需要說明的原型數據的數據類型,但還需要一個指針指示在bst.h用於GOTO指令。

我在C99中編寫,在Makefile中嘗試了很多依賴性變體,但沒有結果。

在此先感謝。

+3

這不是一個Makefile的問題,你只需要*包含頭文件警衛*。 –

回答

3

擴大對奧利的評論,在str.h:

#ifndef __STR_H__ 
#define __STR_H__ 

/* str.h contents here */ 

#endif 
+0

並確保在不同的文件中使用不同的名稱('__BST_H__'等)。 – creichen

+0

@creichen和Oli:非常感謝!這是非常有用的方法。對項目的所有文件進行更改,一切正常。 –