搜索
bottom↓
回复: 8

为什么很多地方ucos都要强制类型转化?

[复制链接]

出0入10汤圆

发表于 2014-10-24 20:40:02 | 显示全部楼层 |阅读模式
如题,大家有没有看到很多规范点的代码很多地方都有强制类型转化,随便来一段就有。
我觉得有的时候是没有必要的,大家怎么看?

  1. #if (CPU_CFG_TS_TMR_EN == DEF_ENABLED)
  2. //初始化并启动时间戳定时器
  3. void  CPU_TS_TmrInit (void)
  4. {
  5.     CPU_INT32U  fclk_freq;


  6.     fclk_freq = BSP_CPU_ClkFreq();

  7.     BSP_REG_DEM_CR     |= (CPU_INT32U)BSP_BIT_DEM_CR_TRCENA;    /* Enable Cortex-M4's DWT CYCCNT reg.                   */
  8.     BSP_REG_DWT_CYCCNT  = (CPU_INT32U)0u;
  9.     BSP_REG_DWT_CR     |= (CPU_INT32U)BSP_BIT_DWT_CR_CYCCNTENA;

  10.     CPU_TS_TmrFreqSet((CPU_TS_TMR_FREQ)fclk_freq);
  11. }
  12. #endif
复制代码

出0入0汤圆

发表于 2014-10-24 20:44:15 | 显示全部楼层
看两边的数据类型定义,有的可能就是多余;有的是放在其它平台上的时候需要,ARM/32Bit上不用。

出0入0汤圆

发表于 2014-10-24 21:32:37 | 显示全部楼层
有时候不加编译器会有警告,这个的话省去不少麻烦,要不编译下来一堆警告,别人看着很不舒服。

出0入10汤圆

 楼主| 发表于 2014-10-24 21:39:32 | 显示全部楼层
看到:强制转换本来就不是必须的,malloc()返回的是void *类型的,会根据不同的指针变量而自动转换成所需要的类型,只不过在有些编译系统中,不加类型转换会收到WRONG而已

出0入0汤圆

发表于 2014-10-24 21:51:40 | 显示全部楼层
过来看看学习一下~~

出0入0汤圆

发表于 2014-10-24 22:16:58 | 显示全部楼层
主要是为了跨平台的可移植性,不同的平台下的编译器对代码有不同层次的要求

出0入0汤圆

发表于 2014-10-24 22:30:14 | 显示全部楼层
跨平台

出0入0汤圆

发表于 2014-10-24 22:34:16 | 显示全部楼层
随风飘旭 发表于 2014-10-24 22:16
主要是为了跨平台的可移植性,不同的平台下的编译器对代码有不同层次的要求 ...

表达很专业,很准确。

出0入0汤圆

发表于 2014-10-24 22:38:24 | 显示全部楼层
最重要的是做运算的时候要自己强制类型转换不要依赖编译器
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-9 07:48

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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