博客首页 注册 建议与交流 排行榜 加入友情链接
推荐 投诉 搜索: 帮助

好好学习

  bilbo.cublog.cn

关于作者
姓名:你知道
职业:IT
年龄:每年大一岁
位置:地球
个性介绍:挺笨
Email: bilbo0214@163.com
|| << >> ||
我的分类


portable vs. non-portable code example

不可移植的代码例子:

 

typedef struct Version {

    INT16U Ver;

} CFGFILEVER;

 

const INT16U RELEASE_VERSION = 0x8801;

 

CFGFILEVER  *pCfgVer = NULL;   /* pointer to version */

 

pTmp = (INT8U *)(CONF_ROM_ADDRESS);

pCfgVer = (CFGFILEVER *)pTmp;

if (RELEASE_VERSION == pCfgVer->Ver)  //pCfgVer->Ver的值与cpu大小端有关

{

//...

}

 

 

修改后的代码:(可移植)

INT16U  wVersion = 0;          /* cfg file version */

 

pTmp = (INT8U *)(CONF_ROM_ADDRESS);

wVersion = MAKEWORD(pTmp[0], pTmp[1]);  //明确定义字节顺序,与实际cpu大小端无关

if (RELEASE_VERSION == wVersion)

{

//...

}

发表于: 2008-07-03,修改于: 2008-07-03 22:10,已浏览153次,有评论0条 推荐 投诉


网友评论
 发表评论