在编译时确定字节序的便携/标准方法

时间:2014-11-21 03:05:31

标签: c++ c

请不要将此标记为重复。 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

在我的使用案例中,性能至关重要,因此ntohshtons不适合我。我需要在预处理时间内进行这种endian检查。

问题。是否有标准方式(语言标准)来执行此预处理?

0 个答案:

没有答案