Will Brode
Will Brode

Reputation: 1146

Including a #define in all .c source files at compile time

I need to include a #define at the top of around 300 .c files. I would prefer not to change the code as it is open source code but if I have to I will just write a script to modify all the files. Is there a way using gcc to add a #define or header file include to the top of every source file during compilation? The #define is this:

#define malloc MYmalloc

Upvotes: 11

Views: 17718

Answers (3)

ouah
ouah

Reputation: 145919

You can pass -Dmalloc=MYmalloc to the gcc options.

For more information about the -D option:

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

Note that if you want to modify the behavior of malloc function for debugging purposes, you may also be interested in glibc malloc hooks:

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

Upvotes: 27

grundprinzip
grundprinzip

Reputation: 2491

If you strive for redirecting malloc() calls to a custom function I would rather recommend to provide your custom code via pre-loading of your implementation at runtime. See this question for details.

Upvotes: 0

joe
joe

Reputation: 617

gcc option -D:

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

-D name=definition
    ....

so, in your case, gcc ... -Dmalloc=MYmalloc

Upvotes: 7

Related Questions