您的位置 首页 5G

(*(void(*)())0) ()解说-单片机特殊的复位

硬件地址跳到0处(*(void(*)())0)();预备知识float(*h)();表示h是一个指向返回值float类型的函数的指针(float(*)())表示一个指向返回值fl

硬件地址跳到0处

(*(void(*)())0)();

准备常识

float (*h)();

表明h是一个指向返回值float类型的函数的指针

(float(*)())

表明一个”指向返回值float类型的函数的指针”的类型转化符

假定fp是一个函数指针,那么怎么调用fp所指向的函数,调用办法如下:

(*fp)();

依照人们的惯性思想,那么咱们能够这样写

(*0)();

上式不能收效,由于运算符*必需要一个指针来做操作数,并且这个指针还有必要是个函数指针。所以咱们必需要把0强制转化成一个函数指针(指向返回值为void类型的函数的指针)

假定fp是个float指针,声明如下

float * fp;

把0强制转化成一个float指针(把变量fp去掉就能够了)

(float *)0;

相似:

假定fp是函数指针为void类型的函数的指针),声明如下:

void (*fp)();

把0强制转化成该函数指针(变量fp去掉就能够了)

(void(*)())0

最后用(void(*)())0替代fp,然后得到调用的用法

(*(void(*)())0)();

可用typedef简化函数指针

例如:

typedef char * string;

string test=”hello”;

相似

typedef void(*func)(); //这样func就表明一个函数指针的类型

(*(func)0)();

比如

办法一:

typedef void (*pfunction)(void);

void FMI_Jump(void)
{
pfunction jump;
jump=(pfunction)(0x80000);
jump();

}

办法二:

((void(code *)(void))0xF400)();

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/yingyong/5g/318039.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部