可以检查函数指针
Possible to inspect a function pointer
假设我有以下函数对数字进行某种数学运算:
int apply(int (*fp)(int n), int before)
{
printf("before: %d\n", before);
int after = fp(before);
printf("after: %d\n", after);
return after;
}
这里有什么方法可以推断 *fp
在函数体内指向什么?我的想法不是,但也许有一些实用程序或其他可以给它一个函数地址的地方,它会 return function/memory 标签或名称。这有可能以某种方式做到吗?
不在标准 C 中,除了 if (fp == some_function)
。
有些系统可能有这样的功能,但它是为了调试,而不是反射。
Is there any way here to infer what *fp pointers to within the body of the function?
fp
将是传入的任何函数的地址;你可以在那里访问字节,但是字节将是编译代码,所以看起来不是特别友好。如果你使用的是调试器,你当然可以单步执行函数。
假设我有以下函数对数字进行某种数学运算:
int apply(int (*fp)(int n), int before)
{
printf("before: %d\n", before);
int after = fp(before);
printf("after: %d\n", after);
return after;
}
这里有什么方法可以推断 *fp
在函数体内指向什么?我的想法不是,但也许有一些实用程序或其他可以给它一个函数地址的地方,它会 return function/memory 标签或名称。这有可能以某种方式做到吗?
不在标准 C 中,除了 if (fp == some_function)
。
有些系统可能有这样的功能,但它是为了调试,而不是反射。
Is there any way here to infer what *fp pointers to within the body of the function?
fp
将是传入的任何函数的地址;你可以在那里访问字节,但是字节将是编译代码,所以看起来不是特别友好。如果你使用的是调试器,你当然可以单步执行函数。