2017-10-13 43 views
-1

我有一套函數foo1(),foo2(),foo3(),...在我的foo.c文件。 理想情況下,我想自由選擇哪些功能將被納入到程序中,哪些會被忽略/註釋掉。 makefile是否適合這樣的任務?是適合挑選什麼功能包括

隨意告訴我,如果有更好/更方便的方法來實現這一點。

+2

爲什麼你不能讓他們都在? – Bathsheba

+5

您要通過這樣做解決的*實際*問題是什麼? –

+0

'我想自由選擇哪些函數將被包含到程序中,哪些函數將被忽略......這就是爲什麼你要給它們打電話,對吧? –

回答

2

我想也許你需要一些馬可斯和-D選項?

#ifdef FOO1 
void foo1() 
{} 
#endif 
#ifdef FOO2 
void foo2() 
{} 
#endif 

然後,在makefile中加入flage -DFOO2,那麼只有foo2會被編譯,而foo1會被忽略。 例如:

gcc -DFOO2 main.c 
+0

我很喜歡這個!謝謝 – SiltCrawler

1

最方便的辦法是離開他們,他們是,只是不叫被忽略的人。一些編譯器可能會優化和排除二進制代碼。

第二種最方便的方法是使用預處理器#ifdef指令和編譯器-D標誌。

最不方便的方法是編寫一個腳本,該腳本將只生成請求的函數foo.c,並從make調用該腳本。

+0

非常豐富。如果我想確定哪些函數進入二進制文件,我堅持預處理器指令。謝謝! – SiltCrawler