请不要将此标记为重复。 suggested duplicate post实际上是在谈论RUNTIME决定。最重要的是,那里的答案都没有回答我的问题。
我需要从C / C ++中的两个字节读取uint16_t
。所以,我需要决定我的代码编译的平台的endian格式。我目前正在使用GNU C extension中的宏。
// 'size' is 'uint16_t' and read from big-endian format.
// So if the platform is little-endian, I need to flip the btyes.
#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
size = ( size << 8 ) | ( size >> 8 );
#endif
在我的使用案例中,性能至关重要,因此ntohs
或htons
不适合我。我需要在预处理时间内进行这种endian检查。
问题。是否有标准方式(语言标准)来执行此预处理?