我可以依靠“ sizeof”来确定我使用的是32位操作系统还是64位操作系统

巴拉克的手

假设我不确定如何检查正在运行的操作系统。

所以我想使用下面的代码来确定:

#include <limits.h>
...
size_t os_size = sizeof(void*) * CHAR_BIT;

我可以100%依靠它吗,还是需要注意一些警告?

例如:

是否可以为32位操作系统安装编译器并在64位OS上正常工作?

谢谢

巴西勒·斯塔林凯维奇

从理论上讲,您可以使用char32位的C实现sizeof(char)= sizeof(int)= sizeof(long)= 1,可能sizeof(long long)= 2;IIRC在Common Lisp(或也许只有SBCL)中对C的一些实验性实现正在做类似的事情。可悲的是,我忘记了细节。

在实践中,更好地利用<stdint.h>给予int32_tint64_t并且intptr_t使得sizeof(intptr_t)= sizeof(void*)

所以答案是否定的

您可以使用<limits.h>INT_MAX等...

您可以使用交叉编译器...(例如,在Linux x86-64桌面上编译带有交叉GCC的32位ARM android平板电脑)。

您可能要使用autoconf之类的东西阅读有关GCC通用预定义宏的信息也许你想要__LP64__

并且您可能在x86-64上具有支持64位的Linux操作系统,但是在chroot提供32位环境(带有32位libc,32位编译器等)-ed环境(或docker容器)中运行。这实际上是有用的(例如,在64位Linux便携式计算机上进行测试,可以在32位上编译和执行您的应用)。参见例如schroot大多数Linux x86-64系统都能够运行32位x86 ELF二进制文件(至少在静态链接的情况下)。顺便说一句,在我的Linux / Debian / x86-64系统上,它gcc -m32会生成32位的目标文件和可执行文件,但是gcc -m64或者只gcc提供了64位...

在POSIX系统上,要查找有关您的机器的信息,请使用uname(2)在Linux上,您甚至可以读取和解析/proc/cpuinfo(以及,下的其他一些文件/proc/,请参见proc(5))。

我对Windows一无所知。如果使用它,则应尝试Linux。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何检查我的操作系统是64位还是32位?

来自分类Dev

我的系统可以运行64位操作系统吗?

来自分类Dev

我的系统可以运行64位操作系统吗?

来自分类Dev

当主机操作系统为32位时,我不能将64位操作系统作为来宾操作系统安装

来自分类Dev

当我使用Windows 64位操作系统时,“ win32”从何而来

来自分类Dev

您可以在运行32位操作系统的64位CPU上使用多少内存?

来自分类Dev

通常,您可以在64位操作系统上使用32位驱动程序吗?

来自分类Dev

我可以在Windows 7 32位操作系统上运行的VirtualBox上安装Windows 7 64位吗?

来自分类Dev

如何知道32/64位之间哪种操作系统适合我的PC?

来自分类Dev

为什么在64位操作系统上,我的进程使用vshost32.exe而不是vshost.exe运行?

来自分类Dev

我可以在奔腾4计算机上运行64位操作系统吗?

来自分类Dev

我可以依靠操作系统将线程调度为“最佳”线程吗(并行化)

来自分类Dev

是否可以配置.deb软件包,使其仅安装在32位操作系统上,而不安装在64位操作系统上?

来自分类Dev

我怎么知道我的CPU在Linux下支持64位操作系统?

来自分类Dev

PHP_INT_SIZE返回4,但我的操作系统是64位

来自分类Dev

我应该安装64位版本的操作系统吗?

来自分类Dev

为什么RAM芯片独立于我的系统是32位系统还是64位系统?

来自分类Dev

RAM增加+ 64位操作系统可以提高系统性能多少?

来自分类Dev

我可以依靠无序地图的顺序吗?

来自分类Dev

我有64位操作系统(Win 7),但是当我检查sizeof(pointer)时说4字节。对于64位OS,应该不是8字节

来自分类Dev

Windows Virtual PC可以运行64位操作系统吗?

来自分类Dev

如果我在具有超过4GB RAM的计算机上运行32位操作系统,则会使用那些RAM棒

来自分类Dev

MS Visual Studio Professional 2013-C ++可以为32位和64位操作系统编译单个可执行文件吗?

来自分类Dev

我如何让.vimrc检测我正在使用的操作系统?

来自分类Dev

无法加载我的操作系统内核

来自分类Dev

我的操作系统完成了吗?

来自分类Dev

我正在尝试安装操作系统

来自分类Dev

为什么我的程序文件说(x86),但是我的处理器和操作系统是x64位

来自分类Dev

我可以确定操作系统是否在可可中的虚拟机中运行吗?

Related 相关文章

  1. 1

    如何检查我的操作系统是64位还是32位?

  2. 2

    我的系统可以运行64位操作系统吗?

  3. 3

    我的系统可以运行64位操作系统吗?

  4. 4

    当主机操作系统为32位时,我不能将64位操作系统作为来宾操作系统安装

  5. 5

    当我使用Windows 64位操作系统时,“ win32”从何而来

  6. 6

    您可以在运行32位操作系统的64位CPU上使用多少内存?

  7. 7

    通常,您可以在64位操作系统上使用32位驱动程序吗?

  8. 8

    我可以在Windows 7 32位操作系统上运行的VirtualBox上安装Windows 7 64位吗?

  9. 9

    如何知道32/64位之间哪种操作系统适合我的PC?

  10. 10

    为什么在64位操作系统上,我的进程使用vshost32.exe而不是vshost.exe运行?

  11. 11

    我可以在奔腾4计算机上运行64位操作系统吗?

  12. 12

    我可以依靠操作系统将线程调度为“最佳”线程吗(并行化)

  13. 13

    是否可以配置.deb软件包,使其仅安装在32位操作系统上,而不安装在64位操作系统上?

  14. 14

    我怎么知道我的CPU在Linux下支持64位操作系统?

  15. 15

    PHP_INT_SIZE返回4,但我的操作系统是64位

  16. 16

    我应该安装64位版本的操作系统吗?

  17. 17

    为什么RAM芯片独立于我的系统是32位系统还是64位系统?

  18. 18

    RAM增加+ 64位操作系统可以提高系统性能多少?

  19. 19

    我可以依靠无序地图的顺序吗?

  20. 20

    我有64位操作系统(Win 7),但是当我检查sizeof(pointer)时说4字节。对于64位OS,应该不是8字节

  21. 21

    Windows Virtual PC可以运行64位操作系统吗?

  22. 22

    如果我在具有超过4GB RAM的计算机上运行32位操作系统,则会使用那些RAM棒

  23. 23

    MS Visual Studio Professional 2013-C ++可以为32位和64位操作系统编译单个可执行文件吗?

  24. 24

    我如何让.vimrc检测我正在使用的操作系统?

  25. 25

    无法加载我的操作系统内核

  26. 26

    我的操作系统完成了吗?

  27. 27

    我正在尝试安装操作系统

  28. 28

    为什么我的程序文件说(x86),但是我的处理器和操作系统是x64位

  29. 29

    我可以确定操作系统是否在可可中的虚拟机中运行吗?

热门标签

归档