2012-10-29 67 views
6

我需要在約300個.c文件的頂部包含一個#define。我不想更改代碼,因爲它是開源代碼,但如果必須,我只需編寫一個腳本來修改所有文件。在編譯過程中,有沒有辦法使用gcc將#define或頭文件include添加到每個源文件的頂部?該#define是這樣的:編譯時在所有.c源文件中包含#define

#define malloc MYmalloc 
+0

我想大多數這些.c文件直接或間接'#包括'。嗯... – aschepler

回答

16

你可以通過-Dmalloc=MYmallocgcc選項。

有關-D選項的詳細信息:

http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html

注意,如果要修改malloc函數的行爲出於調試的目的,你也可能有興趣在glibcmalloc鉤:

http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html

+0

謝謝ouah,我會嘗試一下,我認爲這將解決我的問題。我知道malloc掛鉤和LD_PRELOAD解決方案,但它們不適合我的情況。無論哪種方式都很適合其他觀衆。 –

3

gcc option -D

-D name 
    Predefine name as a macro, with definition 1. 

-D name=definition 
    .... 

所以,你的情況,gcc ... -Dmalloc=MYmalloc

0

如果你爭取重定向malloc()調用自定義函數,我寧願推薦通過您的實現在運行時的預加載,以提供自定義代碼。詳情請參閱this問題。

相關問題