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