little endian c语言,endian.h这个头文件里面的宏可以直接用么?
該樓層疑似違規已被系統折疊?隱藏此樓查看此樓
endian.h頭文件中以宏的形式定義了大端字節序、小端字節序和混合字節序
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412
并且宏__BYTE_ORDER確定了當下機器所采用的字節序,根據描述,這個宏定義在頭文件bits/endian.h中
/* This file defines `__BYTE_ORDER' for the particular machine. */
#include
但是在glibc源碼中,bits/endian.h文件中,__BYTE_ORDER并沒有提及。
對__BYTE_ORDER的定義是在類似./glibc-version/sysdeps/[...]/bits/endian.h的文件中的。
貌似是針對不同的平臺情況分別進行定義。比如在./sysdeps/hppa/bits/endian.h中:
/* hppa1.1 big-endian. */
#define __BYTE_ORDER __BIG_ENDIAN
可是,在我的紅帽系統中,一系列的sysdeps目錄沒了,取而代之的是bits/endian.h中的定義:
/* i386/x86_64 are little-endian. */
#define __BYTE_ORDER __LITTLE_ENDIAN
這里有兩個不明白的地方:
1、源碼中無內容的bits/endian,為什么在具體系統里面就有了具體內容?是通過定制,然后人工修改的么?
2、endian.h中的__BYTE_ORDER、__BIG_ENDIAN之類的宏我們可以自由使用么?雖然說用到的機會并不多。
盡管這個頭文件是公開的,但是總感覺這東西好像只有編譯器才能用的樣子……
而且在中講到了字節序的內容,但并沒有提及endian.h頭文件。
總結
以上是生活随笔為你收集整理的little endian c语言,endian.h这个头文件里面的宏可以直接用么?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ua解析接口_VIP电影解析接口(80个
- 下一篇: BIG-ENDIAN VS LITTLE