FWLib不是德国人写的吧?

[复制链接]
3556|5
 楼主| simon21ic 发表于 2009-1-24 02:43 | 显示全部楼层 |阅读模式
最近无所事事,看STM32的库玩,包括USB的库。

并不是想拿来说事,只是给大家一个提醒,关于C语言的严谨性。

#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT(bEpNum,
    _GetENDPOINT(bEpNum) & EPREG_MASK | bAddr)

这个代码有什么问题吗?发现还不止这一个地方。

第一点建议:别拿优先级开玩笑,即使你非常清楚,倒背如流
第二点建议:宏定义的参数,绝对不要忘了加(),世界比你想象的复杂
第三点建议:尽量确保在所有支持的编译器上0警告,即使在最高的警告级别下。

修改:
#define _SetEPAddress(bEpNum,bAddr) _SetENDPOINT((bEpNum),
    (_GetENDPOINT(bEpNum) & EPREG_MASK) | (bAddr))
Swd21ic 发表于 2009-1-28 10:48 | 显示全部楼层

re

:D 你是德国人吗?
 楼主| simon21ic 发表于 2009-1-28 12:19 | 显示全部楼层

不是德国人就不用那么严谨?

那就当我没说,BZ删掉此贴
mcuisp 发表于 2009-1-28 20:25 | 显示全部楼层

呵呵,我做过德国人骂我的程序不够严谨的梦。

 楼主| simon21ic 发表于 2009-1-29 05:37 | 显示全部楼层

参与过一些开源项目,看过不少德国人写的代码

虽然不是所有代码都是非常严谨的,但就平均水平而言,德国人的严谨绝对不是假的。

要不再举个ST的IAR下的示例代码中更加严重的问题?
先说一下问题引发的结果:在某些条件下,某些中断无法执行。
当然也可能这个问题已经有人发现了,我只是没有看到。但这个问题存在于ST的FWLib2.0之前(包括2.0)的demo中。
ijk 发表于 2009-2-2 11:31 | 显示全部楼层

FWLib的作者是不是德国人

  FWLib的作者是不是德国人,在公开的资料里不得而知。就我的体会来说,STM32的FWLib是在逐步完善的,其严谨性也是有所加强,在不少地方也象LZ所说加上了括号;总体感觉FWLib(在严谨性上面)还可以。
  我没有下载STM32的最新FWLib,印象里版本应该是V2.0.3?不知道最新的FWLib还存在LZ说的问题吗?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

266

主题

2597

帖子

104

粉丝
快速回复 在线客服 返回列表 返回顶部