該樓層疑似違規已被系統折疊 隐藏此樓檢視此樓
endian.h頭檔案中以宏的形式定義了大端位元組序、小端位元組序和混合位元組序
#define __LITTLE_ENDIAN 1234
#define __BIG_ENDIAN 4321
#define __PDP_ENDIAN 3412
并且宏__BYTE_ORDER确定了當下機器所采用的位元組序,根據描述,這個宏定義在頭檔案bits/endian.h中
#include
但是在glibc源碼中,bits/endian.h檔案中,__BYTE_ORDER并沒有提及。
對__BYTE_ORDER的定義是在類似./glibc-version/sysdeps/[...]/bits/endian.h的檔案中的。
貌似是針對不同的平台情況分别進行定義。比如在./sysdeps/hppa/bits/endian.h中:
#define __BYTE_ORDER __BIG_ENDIAN
可是,在我的紅帽系統中,一系列的sysdeps目錄沒了,取而代之的是bits/endian.h中的定義:
#define __BYTE_ORDER __LITTLE_ENDIAN
這裡有兩個不明白的地方:
1、源碼中無内容的bits/endian,為什麼在具體系統裡面就有了具體内容?是通過定制,然後人工修改的麼?
2、endian.h中的__BYTE_ORDER、__BIG_ENDIAN之類的宏我們可以自由使用麼?雖然說用到的機會并不多。
盡管這個頭檔案是公開的,但是總感覺這東西好像隻有編譯器才能用的樣子……
而且在中講到了位元組序的内容,但并沒有提及endian.h頭檔案。