相关疑难解决方法(0)

在运行时检测endian有什么好处?

我已经搜索了宏以确定机器上的字节顺序,并且没有找到任何标准的预处理器宏,但很多解决方案在运行时都这样做.为什么我应该在运行时检测到endianess?

如果我做那样的事情:

#ifdef LITTLE_ENDIAN
  inline int swap(int& x) {
    // do swap anyhow
    return swapped;
  }
#elif BIG_ENDIAN
  inline int& swap(int& x) { return x; }
#else
  #error "some blabla"
#endif

int main() {
  int x = 0x1234;
  int y = swap(x);

  return 0;
}
Run Code Online (Sandbox Code Playgroud)

编译器只生成一个函数.

但如果我这样做(见predef.endian):

enum {
  ENDIAN_UNKNOWN,
  ENDIAN_BIG,
  ENDIAN_LITTLE,
  ENDIAN_BIG_WORD,   /* Middle-endian, Honeywell 316 style */
  ENDIAN_LITTLE_WORD /* Middle-endian, PDP-11 style */
};

int endianness(void)
{
  uint8_t buffer[4];

  buffer[0] = 0x00;
  buffer[1] = 0x01; …
Run Code Online (Sandbox Code Playgroud)

c++ endianness

3
推荐指数
1
解决办法
802
查看次数

标签 统计

c++ ×1

endianness ×1