10

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

#define malloc MYmalloc
4

3 回答 3

23

您可以传递-Dmalloc=MYmallocgcc选项。

有关该-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

于 2012-10-29T18:49:55.387 回答
6

gcc 选项-D

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

-D name=definition
    ....

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

于 2012-10-29T18:51:54.157 回答
0

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

于 2012-10-29T18:54:22.067 回答