如何通过模板元编程来确定我的PC是小端还是大端?

时间:2012-09-27 03:01:31

标签: c++ endianness template-meta-programming

我知道非元编程的方式决定PC是否是小端。

例如:

#include <iostream>
#include <stdint.h>

union A { 
    uint16_t v;
    char c[2];
};  

int main(void) {
    A a;
    a.v = 0x0102;
    std::cout << (a.c[0] == 0x01 ? "big endian" : "little endian") << std::endl;

    return 0;
}

但是,它的运行时间很昂贵,不是吗?

那么,有没有办法通过元编程来判断PC是否是小端?

谢谢!

1 个答案:

答案 0 :(得分:0)

语言中没有任何内容要求目标计算机专门用于大端或专门的小端。实际上,某些体系结构允许软件在运行时选择字节序。有些甚至允许每页字节序选择。

模板元程序可能无法了解这些内容。