gpt4 book ai didi

c - 如何用 C 语言编写函数的通用钩子(Hook)?

转载 作者:行者123 更新时间:2023-11-30 18:12:11 36 4
gpt4 key购买 nike

我想编写一个钩子(Hook)函数,每当在程序中调用函数时都会调用该函数,以收集有关函数参数的一些统计信息。例如:

void hook(function f, ...){
//some statistics here
f(...);
}
int main(){
foo(1, 2);
}

因此,它不会直接调用 foo,而是调用 hook,并以 foo 作为第一个参数,以 1, 2 作为额外参数。

C语言中有类似的东西吗?我可以通过其他方式在 C 语言中实现这个目标吗?

最佳答案

可以(滥用)使用宏以简单的方式实现此目的:

void foo( int , int );

void Hook( int a , int b )
{
//do whatever
foo( a , b );
}

#define foo( a , b ) Hook( a , b )

int main( void )
{
foo( 1 , 2 );
}

请注意,这很容易出错,需要仔细编写。

关于c - 如何用 C 语言编写函数的通用钩子(Hook)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40290030/

36 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com