正如标题所说,是否有任何优雅和安全的方法来确定体系结构是 32 位还是 64 位。通过优雅,你可以想到精确、正确、简短、干净、聪明的方式。说到安全,请从标准、C89/C99 和操作系统独立性的角度考虑安全。
最佳答案
简短回答:否
长答案:它取决于太多的操作系统/编译器组合。例如在运行时,在 linux 上你可以查询 proc 文件系统,而在 windows 上你可以查询寄存器。
您可以证明用于编译的编译器具有 32/64 位目标,使用类似的东西:
bool is_32bit() {
return sizeof(int *) == 4;
}
bool is_64bit() {
return sizeof(int *) == 8;
}
这可以在一些假设下工作(例如,它在运行时工作)。您可以为您的平台搜索编译时 #define
,但这是一个众所周知的困惑。
关于c - 确定体系结构是 32 位还是 64 位的优雅而安全的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1288189/