2012-10-29 12 views
6

約300個の.cファイルの先頭に#defineを含める必要があります。私はオープンソースのコードであるのでコードを変更したくないが、すべてのファイルを修正するためのスクリプトを書くだけでよい。コンパイル中にgccを使用して#defineまたはヘッダファイルインクルードをすべてのソースファイルの先頭に追加する方法はありますか?あなたがgccオプションに-Dmalloc=MYmallocを渡すことができコンパイル時にすべての.cソースファイルに#defineを含める

#define malloc MYmalloc 
+0

これらの.cファイルのほとんどは、直接的または間接的に '#include 'と思われます。うーん... – aschepler

答えて

16

#defineはこれです。 -Dオプションの詳細については

デバッグの目的で malloc機能の動作を変更したい場合は、あなたも glibc mallocフックに興味がある可能性があること

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

注:

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

+0

ありがとう、私はこれを試してみるだろうと私はそれが私の問題を解決すると思います。私はmallocフックとLD_PRELOADソリューションについて知っていますが、私の状況には適していません。いずれにしても、他の視聴者には言えます。 –

3

gccオプション-D

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

-D name=definition 
    .... 

ので、あなたのケースでは、あなたは私ではなく、実行時に実装の事前ロードを経由して、カスタムコードを提供するために、推薦するカスタム関数にmalloc()のコールをリダイレクトするために努力した場合gcc ... -Dmalloc=MYmalloc

関連する問題