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

11

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

#define malloc MYmalloc

我猜这些.c文件中的大部分直接或间接地#include <stdlib.h>。嗯... - aschepler
3个回答

27

谢谢ouah,我会尝试这个方法,我认为它可以解决我的问题。我知道malloc钩子和LD_PRELOAD解决方案,但它们不适用于我的情况。无论如何,提到这些对其他观众也是有好处的。 - Will Brode

7

gcc option -D:

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

-D name=definition
    ....

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

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接