c - 如何检查运行在 C 中的机器是 32 位还是 64 位?

标签 c

在 C 中是否有任何预处理器指令或其他方法来检查正在运行的机器是 32 位还是 64 位?我试过用谷歌搜索这个,但 C 的问题是它会为 C#、C++ 等带来结果。另外,我希望它能在 Windows、Linux 和 Mac 上运行。

最佳答案

在运行时执行此操作的明显方法。

#include <limits.h>
#include <stdio.h>

int main()
{
     printf("%d bits\n", (int)(CHAR_BIT * sizeof(void *)));
     return 0;
}

从技术上讲,这不能 100% 保证有效。实际上,这将适用于大多数现代编译器 - 使用与底层系统架构不同的多个位来表示 void 指针是不常见的。

要进行编译时检查,没有标准方法。有必要求助于特定于您的编译器/预处理器的宏。因此,您需要阅读相关文档。

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

相关文章:

c - 使用包含 float 数组的 OpenCL 将结构传递给 GPU

c - 如何使用 scanf\fscanf 读取一行并解析成变量?

c - 绑定(bind)到零地址的意义是什么

c - 在C中读取二维字符串数组

c - printf ("%s",pch) VS. while(printf ("%c"pch[i]))?

Clang 集成汇编程序和 “unknown token in expression” 在否定期间

c - 如何在函数中缩短数组? (动态数组,内存泄漏)

C 错误 C2371 重新定义

c - 将链表的头与其中的链接交换?

c - 当函数有整数作为参数时,如何传递字符串作为参数?