c - 如何查找机器是32位还是64位

标签 c 32bit-64bit

是否有来自 C prog 的信息来确定操作系统当前是在 32 位还是 64 位模式下运行。我正在使用如下所示的简单程序

int main(void){
     switch(sizeof(void*)){
        case 4: printf("32\n");
        break;
        case 8: printf("64\n");
        break;
    }
}

这是正确的做法吗? 这段代码是否适用于所有场景,例如,如果硬件是 64 位而操作系统是 32 位,它会返回什么?我没有机器在差异配置中对此进行测试。

感谢您的建议。

最佳答案

  • 一般来说,32 位可执行文件无法判断它是在 64 位操作系统下运行还是在 32 位操作系统下运行(某些操作系统可能有办法判断,但我不知道没有搜索过),64 位可执行文件不会在 32 位操作系统下运行(如果你不考虑 32 位操作系统模拟运行 64 位操作系统的处理器的可能性......)

  • sizeof() 结果主要是一个编译时间常量,它不会根据运行的操作系统版本返回不同的东西。

你真正想知道什么?

关于c - 如何查找机器是32位还是64位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2401756/

相关文章:

c - 龟兔赛跑指南

ios - iOS 64 位模拟器上的 va_list 类型

c - 在 c 中将 const char* 转换为 char* 的问题

C释放结构指针成员

c - 寻找嵌入式Linux/C平台的web服务解决方案

qt - win 7 x64 上的 32 位 Qt 应用程序无法运行,但在 Qt Creator 中运行良好?

windows - win32 位应用程序可以在 64 位服务器上运行吗?

c - scanf 的异常行为

java - 将基于服务器的产品的 Java 开发迁移到 64 位有什么主要优势吗?

c# - 在一个程序中组合 32 位和 64 位 DLL