我需要在約300個.c文件的頂部包含一個#define
。我不想更改代碼,因爲它是開源代碼,但如果必須,我只需編寫一個腳本來修改所有文件。在編譯過程中,有沒有辦法使用gcc將#define
或頭文件include添加到每個源文件的頂部?該#define
是這樣的:編譯時在所有.c源文件中包含#define
#define malloc MYmalloc
我需要在約300個.c文件的頂部包含一個#define
。我不想更改代碼,因爲它是開源代碼,但如果必須,我只需編寫一個腳本來修改所有文件。在編譯過程中,有沒有辦法使用gcc將#define
或頭文件include添加到每個源文件的頂部?該#define
是這樣的:編譯時在所有.c源文件中包含#define
#define malloc MYmalloc
你可以通過-Dmalloc=MYmalloc
到gcc
選項。
有關-D
選項的詳細信息:
http://gcc.gnu.org/onlinedocs/gcc/Preprocessor-Options.html
注意,如果要修改malloc
函數的行爲出於調試的目的,你也可能有興趣在glibc
malloc
鉤:
http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html
謝謝ouah,我會嘗試一下,我認爲這將解決我的問題。我知道malloc掛鉤和LD_PRELOAD解決方案,但它們不適合我的情況。無論哪種方式都很適合其他觀衆。 –
gcc option -D
:
-D name
Predefine name as a macro, with definition 1.
-D name=definition
....
所以,你的情況,gcc ... -Dmalloc=MYmalloc
如果你爭取重定向malloc()
調用自定義函數,我寧願推薦通過您的實現在運行時的預加載,以提供自定義代碼。詳情請參閱this問題。
我想大多數這些.c文件直接或間接'#包括'。嗯... –
aschepler