鱼C论坛

 找回密码
 立即注册
查看: 2474|回复: 4

[技术交流] 关于强制类型转换

[复制链接]
发表于 2016-6-27 10:11:35 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 阁龙1427 于 2016-7-7 20:52 编辑

这是我在代码中看到的,感觉可以拿来分析一下,为何作者要用这种写法?
是不是多余的?从中你又看出了什么手法么?

  1. ((void (*)(void)) (void*)fun_name)();
复制代码


前几天有个同学问我关于强制类型转换的另一个例子,在这里一通说了吧:

  1. #define GEN_DATA_STRU_DATALEN  (MEM_GEN_SIZE-3 * sizeof(void*))

  2. typedef __packed struct {
  3. void* Address;s
  4. void* MemTypePtr;
  5. void* AppPtr;
  6. INT8U Data[GEN_DATA_STRU_DATALEN];
  7. }GEN_DATA_STRU;

  8. Temp[0]=((GEN_DATA_STRU*)Ptr) ->Data[0];
复制代码


这个就是把内存地址中的Ptr开始算起,后面的sizeof(GEN_DATA_STRU)个字节跟结构体里的一一对应
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2016-7-1 23:20:11 | 显示全部楼层
新<。)#)))≦看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-2 11:18:11 | 显示全部楼层
这个用法常见于 嵌入式实时操作系统当中, 跳转到固定地址中存放的一个函数
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

头像被屏蔽
发表于 2016-7-22 00:34:09 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-7-22 09:28:39 | 显示全部楼层

嵌入式的 哈哈
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-3-29 13:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表