Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1661066
  • 博文数量: 230
  • 博客积分: 10045
  • 博客等级: 上将
  • 技术积分: 3357
  • 用 户 组: 普通用户
  • 注册时间: 2006-12-30 20:40
文章分类

全部博文(230)

文章存档

2011年(7)

2010年(35)

2009年(62)

2008年(126)

我的朋友

分类: C/C++

2008-07-03 22:10:26

不可移植的代码例子:

 

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)

{

//...

}

阅读(1561) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~