2014-03-27 13 views
1

我有一個包含許多頭文件的C項目,但我不想用一堆定義向客戶端傳遞一個特定的頭文件。我希望所有其他文件只用特定的頭文件進行預處理,並且我希望將所有源重新生成到一個新目錄,以便客戶端能夠編譯此項目的新源,儘管他沒有提到的頭文件。如何將單頭文件應用到C項目的其餘部分,以便不再需要它?

有沒有Linux或Windows的方式來做到這一點,而無需在編輯器中手動搜索/替換?

+1

我想你可以像'#inc lude'一樣癱瘓其他#includes,然後在文件(gcc -E左右)上運行C預處理器。這可能會變得非常醜陋 - 爲什麼不給你的客戶端文件? –

+1

我會使用類似'm4'的工具 - 將特殊頭文件轉換爲一堆m4宏,然後將其應用於所有源文件。 –

+1

謝謝保羅。請將您的答覆寫爲答案,以便我可以接受。 – avra

回答

1

我會用一個宏處理工具如m4,這是廣泛可用的(這是在大多數Linux和* nix分佈的標準,因爲它是用來通過autoconf的,sendmail的,等人)。將特殊標題轉換爲一堆m4宏,然後將其應用於所有源文件。

請注意,m4還有很多其他替代方法,還可以考慮使用Perl等腳本語言。

相關問題