开发者社区> 问答> 正文

函数指针指向问题,GCC和VC的差异?报错

#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;
}

)

展开
收起
爱吃鱼的程序员 2020-06-20 16:53:21 429 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    你试试(PF)(void*)buff行了,太感谢你了机器码??怎么来的?<divclass='ref'>

    引用来自“jingweiyoung”的评论

    机器码??怎么来的?if(*ps==0xc3){break;}你怎么知道就是0xc3的时候break??

    2020-06-20 16:53:38
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载