C程序如何做一个C程序确定,在运行时无论是在小端或大端CPU运行(不是编译时), ?检查CPU类型在运行时间上MAC
为什么它必须是“运行时”检查,而不是“complie-time”,是因为我用MAC-OSX的通用二进制格式构建程序,使用我的MAC和Intel-CPU。预计该程序可以在英特尔和Power-PC CPU上运行。即通过MAC上的通用二进制格式,我想使用Intel-CPU构建一个程序并在PPC CPU下运行它。
需要的CPU检查在我的程序逻辑是主机到网络字节顺序变更功能,用于64位整数。现在我已经盲目地交换了字节顺序,这在Intel-CPU上可以正常工作,但是在PPC上会中断。这里是C函数:
unsigned long long
hton64b (const unsigned long long h64bits) {
// Low-order 32 bits in front, followed by high-order 32 bits.
return (
(
(unsigned long long)
(htonl((unsigned long) (h64bits & 0xFFFFFFFF)))
) << 32
)
|
(
htonl((unsigned long) (((h64bits) >> 32) & 0xFFFFFFFF))
);
}; // hton64b()
任何更好的方式以跨平台的方式做到这一点?
感谢