2012-10-29 12 views
6

Potrzebuję dołączyć #define na górze około 300 plików .c. Wolałbym nie zmieniać kodu, ponieważ jest to kod open source, ale jeśli muszę, po prostu napiszę skrypt, aby zmodyfikować wszystkie pliki. Czy istnieje sposób używania gcc do dodawania pliku #define lub nagłówka do początku każdego pliku źródłowego podczas kompilacji? #define to:W tym #define we wszystkich plikach źródłowych .c podczas kompilacji

#define malloc MYmalloc 
+0

Przypuszczam, że większość z tych plików .c bezpośrednio lub pośrednio '#include '. Hmmm ... – aschepler

Odpowiedz

16

można przekazać -Dmalloc=MYmalloc z opcjami gcc.

Aby uzyskać więcej informacji na temat opcji -D:

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

Pamiętaj, że jeśli chcesz zmodyfikować zachowanie malloc funkcji dla celów debugowania, może być także zainteresowany glibcmalloc haków:

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

+0

Dzięki ouah, spróbuję tego i myślę, że rozwiąże moje problemy. Wiem o rozwiązaniach malloc hooks i LD_PRELOAD, ale nie nadają się one do mojej sytuacji. Tak czy inaczej dobrze jest wspomnieć o nim innym widzom. –

3

opcja gcc -D:

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

-D name=definition 
    .... 

tak, w przypadku, gcc ... -Dmalloc=MYmalloc

0

Jeśli dążyć do przekierowywania malloc() połączeń do niestandardowych funkcji Wolałbym zalecić podanie kodu niestandardowego poprzez pre-loading swojej realizacji na starcie. Aby uzyskać szczegółowe informacje, patrz: this.

Powiązane problemy