2012-10-29 12 views
6

Devo includere uno #define nella parte superiore di circa 300 file .c. Preferirei non modificare il codice in quanto è codice open source, ma se dovessi scrivere semplicemente uno script per modificare tutti i file. C'è un modo per utilizzare gcc per aggiungere uno #define o un file di intestazione includere all'inizio di ogni file sorgente durante la compilazione? Il #define è questo:Incluso un #define in tutti i file di origine .c al momento della compilazione

#define malloc MYmalloc 
+0

Suppongo che la maggior parte di questi file .c sia direttamente o indirettamente '#include '. Hmmm ... – aschepler

risposta

16

Si può passare -Dmalloc=MYmalloc alle gcc opzioni.

Per ulteriori informazioni sull'opzione -D:

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

Si noti che se si desidera modificare il comportamento di malloc funzione a scopo di debugging, si può anche essere interessati a glibcmalloc ganci:

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

+0

Grazie oua, ci proverò e penso che risolverà i miei problemi. Conosco i ganci malloc e le soluzioni LD_PRELOAD ma non sono adatti alla mia situazione. In ogni caso è bene menzionarlo per altri spettatori. –

3

gcc opzione -D:

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

-D name=definition 
    .... 

così, nel tuo caso, gcc ... -Dmalloc=MYmalloc

0

Se vi sforzate per il reindirizzamento malloc() chiamate a una funzione personalizzata avrei preferito raccomandare a fornire il proprio codice personalizzato tramite pre-caricamento della vostra implementazione in fase di esecuzione. Vedi domanda this per i dettagli.

Problemi correlati