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

How can I decide my PC is little endian or big endian by template meta-programing?

本文关键字:PC 我的 何通过 编程      更新时间:2023-10-16

我知道非元编程决定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是否是小端序呢?

谢谢!

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

模板元程序不可能知道这些东西的任何信息。