首页 > 解决方案 > 我可以仅在指定文件中拦截我的代码中的函数调用吗?

问题描述

我有两个(很长的)c 代码文件foo1.cfoo2.c,以及一个我无法访问其源代码的库libfoo.a。在所有三个文件中,它们都使用了一个名为MyFooFunc. 现在我只想拦截MyFooFunc来自的调用foo1.c,有自己的实现,但不要拦截其他两个文件中的函数调用。有什么办法可以做到这一点,而无需重命名MyFooFunc函数名称?

感谢您的任何建议。

标签: c

解决方案


如果您不想更改“foo1.c”,最简单的方法是将其编译到另一个源文件中。那就不要自己编译了。

正如 Eric 所建议的,此包装器使用预处理器宏更改函数的名称。

// foo1altered.c
#define MyFooFunc MyAlternateFooFunc
#include "foo1.c"

推荐阅读