我的编译器支持所谓的"类型限定符" __bigendian和__littleendian.
我的变量Buffer看起来像这样:
static union
{
uint8 as_byte[10];
__bigendian uint16 as_big_endian[5];
uint16 as_little_endian[5];
} Buffer;
Run Code Online (Sandbox Code Playgroud)
在我的情况下,微控制器是小端,但对于某些通信接口,我需要大端格式的16位单元.
微控制器支持一条指令byte swap,该指令是在使用这些类型限定符的情况下编译的,所以实际上这似乎是一种舒适的方式.
编译器手册说我应该避免使用"类型限定符",因为可移植性问题 - 当然!
我只是想知道是否有比使用字节访问更好的方法并根据目标的字节顺序手动进行交换?