C++编译期间字节序判断

当前常用的字节序一般就两种,大端序和小端序。
下面列出四种字节序的表达方式。在对应平台下,内存布局为{0x,00,0x01,0x02,0x03}的四字节,表示为十六进制的值就如下面代码所示的。

ENDIAN_BIG		= 0x00010203,	/* 大端序 ABCD */
ENDIAN_LITTLE		= 0x03020100,	/* 小端序 DCBA */
ENDIAN_BIG_WORD		= 0x02030001,   /* 中端序 CDAB, Honeywell 316 风格 */
ENDIAN_LITTLE_WORD	= 0x01000302	/* 中端序 BADC, PDP-11 风格 */

gcc或clang中可以使用 __BYTE_ORDER__宏来判断

#include <stdio.h>
#include <stdlib.h>

int main()
{
// 这两个宏是gcc或者clang支持的
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
	puts("小端序");
#elif __BYTE_ORDER__== __ORDER_BIG_ENDIAN__
	puts("大端序");
#else
	puts("未知字节序");
#endif // __BYTE_ORDER__
	return 0;
}

还有使用C++ 11constexpr关键字特性来做编译时判断的方法。但是我没有编译通过。
相关的可以看下面这两个网页

原文链接: https://www.cnblogs.com/oloroso/p/6203365.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    C++编译期间字节序判断

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/246159

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 上午1:19
下一篇 2023年2月14日 上午1:20

相关推荐