【发布时间】:2017-04-28 01:05:04
【问题描述】:
我正在反转一个源代码,我发现了一个看起来像这样的函数:
考虑一下:
int examplefn(int x) { return x * 4; }
int (*rtx())(int)
{
return examplefn;
}
好吧,然后我需要一个指向rtx() 的指针函数来做一个钩子,然后
我做过这样的事情:
int (*fncptr())(int) = (int(*())(int))0xC0FFEE;
/* 0xC0FFEE it's a sample of the memory address of the function...*/
但是我的编译器没有编译,然后我尝试做:
typedef int(*fnc_t())(int);
// Clearer example pointing to rtx
fnc_t* TRY_2 = (fnc_t*)&rtx;
// then has successfully compiled, ex test...
int main()
{
std::cout << TRY_2()(4) << std::endl; // output: 16 ok.
}
好吧,我要直截了当,¿如何在不使用 typedef 的情况下进行正确的转换?
我在互联网上搜索了所有东西,但我没有找到任何东西......
【问题讨论】:
标签: c++ visual-c++ c++14 function-pointers