在编译时在所有.c源文件中包含#define

时间:2012-10-29 18:48:45

标签: c gcc

我需要在大约300个.c文件的顶部添加#define。我宁愿不更改代码,因为它是开源代码,但如果我必须,我将只编写一个脚本来修改所有文件。有没有办法在编译期间使用gcc将#define或头文件include添加到每个源文件的顶部? #define就是这样:

#define malloc MYmalloc

3 个答案:

答案 0 :(得分:19)

您可以将-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

答案 1 :(得分:3)

gcc选项-D

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

-D name=definition
    ....

所以,在您的情况下,gcc ... -Dmalloc=MYmalloc

答案 2 :(得分:0)

如果您努力将malloc()调用重定向到自定义函数,我建议您通过在运行时预加载实现来提供自定义代码。有关详细信息,请参阅this问题。