【发布时间】:2019-08-28 17:28:45
【问题描述】:
如here 所述,我们可以使用-Wl,--wrap 开关来包装函数。
考虑以下程序:
#include <stdio.h>
void __wrap_f()
{
puts("wrapped");
}
void f()
{
puts("original");
}
int main(void)
{
f();
}
程序被写入a.c 并编译为gcc -Wl,--wrap=f a.c。当我运行可执行文件(使用./a.out)时,我得到original 作为输出。
我的期望是在调用f() 时,将调用包装后的版本并且程序将打印wrapped。请让我知道我在这里缺少什么。
GCC 版本:9.1.0
【问题讨论】:
-
查看关于该问题的第一条评论。其实看看答案。这是完全相同的问题。
-
如 cmets on 和您链接到的问题的答案中所述,您忽略了“未定义的引用”要求。