#include<stdio.h>
typedef int (* PF)(int,int);
int main(void)
{
unsigned char buff[]="\x8b\x44\x24\x08\x8b\x4c\x24\x04\x03\xc1\xc3";
PF pf=(PF)buff;
int result=0;
result=pf(8,2);
printf("result=%i\n",result);
return 0;
}
为什么上面的代码在GCC下能编译通过,但是在VC里面编译就报错
error C2440: 'type cast' : cannot convert from 'unsigned char [12]' to 'int (__cdecl *)(int,int)'
GCC可以这样强转,VC就不行?那VC有没有其他办法达到类似的效果
(注:“\x8b\x44\x24\x08\x8b\x4c\x24\x04\x03\xc1\xc3”是下面函数的机器码
int add(int x,int y)
{
return x+y;
}
)
你试试(PF)(void*)buff行了,太感谢你了机器码??怎么来的?<divclass='ref'>
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。