zhan2905 发表于 2013-4-18 16:00:33

请教void_fp 与 void (*)() 有什么区别?

本帖最后由 zhan2905 于 2013-4-18 16:04 编辑

(*((void_fp)(*IntupFunPtr)))();    *IntupFunPtr指向一个数组

((void (*)())(AirconCmdFunArray))();

(*((void (*)())(*IntupFunPtr)))();

总之可以这样说就是 我看不懂 但是我感觉 void_fp   与 void (*)()   是等价 的
求这两个的 使用方法 与解析

绿茶山人 发表于 2013-4-18 18:41:44

你的void_fp是什么意思,怎样定义的,看字面意思是指向函数的指针(没指明类型),不知道有没有说对。void(*)()表示该函数返回任意类型的指针,我感觉二者是等价的,不知道说没说对,仅供参考。

zhan2905 发表于 2013-4-19 10:36:45

void_fp 这个东西 貌似是 keil里面特有的 以前在 有关keil详解里面 见过 不过 印象不深了!

zhan2905 发表于 2013-4-22 10:52:30

有米有人 懂滴呀!

eduhf_123 发表于 2013-4-22 11:07:51

typedef void (*void_fp)();

monkerman 发表于 2013-4-22 11:11:44

/*
** 个人见解, 仅供参考. 如有错误, 还望指出.
*/

// 这个void_fp 可能是 typedef void (* void_fp)(void); LZ 能找到不?
1. (*((void_fp)(*IntupFunPtr)))();    // 楼主: " *IntupFunPtr 指向一个数组", 是数组的首地址吧?


// 这是个函数指针数组, 数组成员都是指向 void func(void) 类型函数的指针
2. ((void (*)())(AirconCmdFunArray))();// 根据 AerConCommand 值调用数组内对应的函数执行.


// 这个 IntupFunPtr 是一个函数的入口地址, 在这里强制转换成
// 无输入无输出的函数类型. 最左边的 '*' 表示执行这个函数.
3. (*((void (*)())(*IntupFunPtr)))(); // 这个和第一句应该是一样的意思.
页: [1]
查看完整版本: 请教void_fp 与 void (*)() 有什么区别?