我需要#define在大约 300 个 .c 文件的顶部包含一个。我不希望更改代码,因为它是开源代码,但如果必须,我将只编写一个脚本来修改所有文件。有没有办法在编译期间使用 gcc 在#define每个源文件的顶部添加头文件或头文件?是这样的#define:
#define malloc MYmalloc
您可以传递-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
gcc 选项-D:
-D name
Predefine name as a macro, with definition 1.
-D name=definition
....
所以,在你的情况下,gcc ... -Dmalloc=MYmalloc
如果您努力将malloc()调用重定向到自定义函数,我宁愿建议通过在运行时预加载您的实现来提供您的自定义代码。有关详细信息,请参阅此问题。