Chinaunix首页 | 论坛 | 博客
  • 博客访问: 75758
  • 博文数量: 15
  • 博客积分: 607
  • 博客等级: 中士
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-20 14:42
文章分类
文章存档

2011年(1)

2008年(14)

我的朋友

分类: C/C++

2008-04-07 14:13:07

在编程时很多文章说通过计算int i= 1低位的方式来判定系统的字节序。
可是,系统已经帮我们定义了判断字节序的宏。为什么还要费这个事?
这个宏就是:__BYTE_ORDER (BYTE_ORDER也可以,因为是一样的)
下面讲解具体用法。
001:程序里一定要包含,宏是在这里定义的。
002:简单的例子:
// test.c
#include
int main(void)
{
}
003:gcc -E -dM test.c
...
#define BYTE_ORDER __BYTE_ORDER
#define __BYTE_ORDER __LITTLE_ENDIAN
#define __FLOAT_WORD_ORDER __BYTE_ORDER
...
明白了吧?__BYTE_ORDER被系统定义成了__LITTLE_ENDIAN。
所以以后我们在程序里用如下语句判断就好了:
#if __BYTE_ORDER == __LITTLE_ENDIAN
// 小头字节序
#elif __BYTE_ORDER == __BIG_ENDIAN
// 大字节序
不信?不信你到linux头文件的目录grep一下。头文件中都是这样判断的。
阅读(4001) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~