2011-03-10 40 views
4

我目前正在開發一個項目(使用C語言),我們使用#defines作爲默認變量。 這些變量用於佈置電池緩衝柱塞結構。替換#defines常量

現在我們有不同的客戶,有不同的佈局。 過去我們只會創建一個全新的軟件。
現在我們試圖擺脫這種碎片並使用相同的代碼庫。

我們有一個通用庫(用於所有項目),它具有一組#define s並聲明結構。目前我們有一個自定義頭文件(其中包含該項目的#defines),並將它們與通用庫中的#define進行比較。如果不同,則會引發錯誤。

我們想保留自定義頭文件,但我試圖找到一個解決方案來替換在通用庫中的#define。一個想法是用某種變量替換它們,另一種是使用某種預處理器定義。

在過去,我們已經使用ifdef s,但代碼非常混亂和可怕,所以我們試圖擺脫這種情況。

任何人有任何解決方案?

回答

4

你可能都#define括號由

#ifndef HUI 
# define HUI 1023 
#endif 

,然後把你想更改單個編譯的的那些用-DHUI=1033編譯的命令行。

+0

得到了一個使用此解決方案的項目。謝謝 – Seth 2011-03-10 16:11:59

2

快速解決方案: 將定義放入單獨的頭文件中。主文件中的 包含通過#fidef的頭文件

如果不同的頭文件的數量不多於一個文件,這將工作。

另一種解決方案: 分隔頭文件像上面,但不是選擇包括經由IFDEF 把定義成單獨的文件夾中,使一個單獨的make文件,名的文件夾被添加到包括路徑。 - >保持代碼乾淨,但你現在#customer的makefile