c - 确定体系结构是 32 位还是 64 位的优雅而安全的方法

标签 c architecture gcc cpu clang

正如标题所说,是否有任何优雅和安全的方法来确定体系结构是 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/

相关文章:

architecture - 在 ntier 应用程序中传递数据

c - 如何获取 C 程序本身设置的所有环境变量?

c - Linux C IPv6 原始套接字 - 告诉套接字不要分配流标签

c# - 从 C# 调用 C# : How to marshall that one 2D array of doubles when the others go so well?

c - C中的多行注释警告是什么意思?

architecture - 当您开始考虑一个编程项目时,您首先会做什么?

model-view-controller - 语言翻译在 MVC 模式中的位置在哪里?

c - 了解 C 中包含 '++' 和 '->' 运算符的表达式的计算

linux - 我们可以在 MPI 中获取进程运行的核心 ID 吗?

gcc - Homebrew 软件找不到 gcc