17 c 32bit-64bit
无论如何,从C编程中找出操作系统当前是以32位还是64位模式运行.我正在使用如下的简单程序
int main(void){
switch(sizeof(void*)){
case 4: printf("32\n");
break;
case 8: printf("64\n");
break;
}
}
Run Code Online (Sandbox Code Playgroud)
这是正确的方法吗?这个代码是否适用于所有场景,例如,如果硬件是64位且操作系统是32位,它会返回什么?我没有机器在diff配置中测试它.
感谢您的建议.
一般来说,32位可执行文件无法判断它是在64位操作系统还是32位操作系统下运行(有些操作系统可以告诉我,我知道没有,但我没有搜索过), 64位可执行文件不能在32位操作系统下运行(如果你不喜欢32位操作系统模拟运行64位操作系统的处理器......)
sizeof()结果主要是一个编译时常量,它不会返回不同的东西,具体取决于它运行的操作系统版本.
你真的想知道什么?
严格按照给出的答案回答您的问题:
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
int main(void) {
long wordBits = sysconf(_SC_WORD_BIT);
if (wordBits == -1 && errno == EINVAL)
return EXIT_FAILURE;
else
printf("%ld\n", wordBits);
return EXIT_SUCCESS;
}
Run Code Online (Sandbox Code Playgroud)
这适用于任何正确配置glibc的情况,并将寄存器大小打印到stdout,否则返回退出代码1.
| 归档时间: |
|
| 查看次数: |
18349 次 |
| 最近记录: |