【发布时间】:2019-09-17 13:52:32
【问题描述】:
是否可以在C 中编写一个宏,它采用uint32_t 并将其转换为大端表示,无论目标系统是小端还是大端,以便可以在编译时评估宏一个常数?
我发现了这个问题:endianness conversion, regardless of endianness,但是,答案只提供功能。我的情况是我希望编译时表达式能够编写如下内容:
const uint32_t magic_number = BIGENDIAN32(0x12345678);
【问题讨论】:
-
您是否希望宏输出一个整数,该整数始终以相同的方式存储在内存中,即。 0x12 在最低地址,然后是 0x34 在地址+1,等等...?
-
如果你需要一个幻数(所以一些没有数字意义的东西),为什么不声明一个 4 字节的数组呢?
-
@GuillaumePetitjean 是的,这是正确的。对于存储,我当然可以将其声明为数组,但我还需要通过整数比较来比较值。此外,我开始怀疑这是否可能如所描述的那样。
标签: c endianness c11