c - 我可以仅在指定文件中拦截我的代码中的函数调用吗?
问题描述
我有两个(很长的)c 代码文件foo1.c
和foo2.c
,以及一个我无法访问其源代码的库libfoo.a
。在所有三个文件中,它们都使用了一个名为MyFooFunc
. 现在我只想拦截MyFooFunc
来自的调用foo1.c
,有自己的实现,但不要拦截其他两个文件中的函数调用。有什么办法可以做到这一点,而无需重命名MyFooFunc
函数名称?
感谢您的任何建议。
解决方案
如果您不想更改“foo1.c”,最简单的方法是将其编译到另一个源文件中。那就不要自己编译了。
正如 Eric 所建议的,此包装器使用预处理器宏更改函数的名称。
// foo1altered.c
#define MyFooFunc MyAlternateFooFunc
#include "foo1.c"
推荐阅读
- node.js - Mongoose userModel 未定义
- c++ - 尝试使用 Assimp GLM 从 MD5 文件加载 OpenGL 中的动画
- adobe - Scene7 URL parameters
- one-to-one - Proving a function isn't 1 to 1
- r - 在 R 中抓取标签链接
- javascript - Javascript:如何在不创建循环依赖项的情况下重用创建子实例的方法
- php - 无法将数据从用户表单发送到 PHP 中的数据库
- javascript - 如何构建我的网站,以便在输入新 URL 时通过 AJAX 加载新内容?
- ruby-on-rails - Rails 5:如何将现有模型的 ID 类型更改为 UUID?
- php - 导出mysql中的自动递增列描述