【发布时间】:2015-11-19 12:03:58
【问题描述】:
请注意,我发现的早期类似问题是在 C++11 之前和/或包含 UB 和/或不能是 constexpr。
不是重复的 Is there a way to do a C++ style compile-time assertion to determine machine's endianness? 或类似
AFAIK 有 little endian、big endian 和 other。如果other至少我需要不编译,如果可以添加other架构就更好了
constexpr and endianness 较早被询问过,但不包括 other,这会使 other 架构被错误地定义为一个或另一个
基本上我希望能够根据目标架构的字节序专门化 template
【问题讨论】:
-
你所说的“其他”是指一些奇特的东西,比如中端或混合端或运行时可切换架构?
-
如下所述,
__ORDER_PDP_ENDIAN__符合条件 -
有些架构没有编译时回答问题,因为它是运行时设置。显然,一些 PowerPC 处理器甚至可以按页面进行选择。
-
@mattnewport:C++ 编译器通常以硬件/操作系统组合为目标。您是否知道在 C++ 应用程序运行时字节序会发生变化的这种组合?
-
@HowardHinnant 我只是通过 Wikipedia:en.wikipedia.org/wiki/Endianness#Bi-endian_hardware - 我自己实际上并没有在野外遇到过这样的系统。听起来它们似乎存在,也许在嵌入式系统中。