2
我發現下面的代碼來檢查字節順序狀態。它適用於VS C++:使用預處理器檢查字節順序
#if '1234' != 0x31323334
# define BIG_ENDIAN
#endif
我不知道它是否可以與其他編譯器一起工作。我會問,如果它是一個標準的代碼?
我發現下面的代碼來檢查字節順序狀態。它適用於VS C++:使用預處理器檢查字節順序
#if '1234' != 0x31323334
# define BIG_ENDIAN
#endif
我不知道它是否可以與其他編譯器一起工作。我會問,如果它是一個標準的代碼?
具有多個字符的字符常量(例如'1234'
)具有實現定義的值。關於'1234'
的值與系統的字節順序之間的關係絕對不能保證。
預處理器只是沒有足夠的信息來確定目標系統的字節順序。
請記住,大端和小端不是唯一的可能性。對於4字節的整數類型,有24(4階乘)可能的字節排序。所有這些語言都是允許的,至少至少有其中3個已被真機使用。
+1對於PDP-11中端編碼器。 –
的可能重複的[C宏定義,以確定大端或小端機器?](http://stackoverflow.com/questions/2100331/c-macro-definition-to-determine-big-endian-or-little -ndian-machine) –
寫這個宏的人很困惑。 1234'== 0x31323334'在大多數小端**和**大端實現中都是如此。 (對於大多數C實現,它們只是編寫相同編號的不同方式,而字節順序根本不包括在內。) –