#include <limits.h>
/* ... */
printf("This machine's pointers to void, in a program "
"compiled with the same options as this one and "
"with the same compiler, use %d bits\n",
(int)sizeof (void*) * CHAR_BIT);
Run Code Online (Sandbox Code Playgroud)
如果用"C中的一些代码"表示标准C代码,则答案是否定的,这是不可能的.对于C程序,它可以看到的"世界"完全由实现(由编译器)创建.编译器可以完全模拟任何与底层硬件完全无关的"世界".
例如,您可以在64位计算机上运行32位编译器,并且您永远无法从程序中检测到这是64位计算机的事实.
您可以找到有关该机器的任何信息的唯一方法是访问一些非标准设施,例如某些特定于操作系统的API.但这远远超出了C语言的范围.
不用说,基于sizeof其他标准语言设施的其他答案方法中已经提出的建议甚至不能近距离地检测机器的位数.相反,他们会检测编译器实现提供的平台的位数,这在一般情况下是完全不同的.
| 归档时间: |
|
| 查看次数: |
3734 次 |
| 最近记录: |