Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取计算机正在运行的操作系统位 你好,我现在正在研究C++程序,想知道如何检查程序运行的人是使用32位机器还是64位机器。我也愿意使用boost来解决这个问题,但我已经浏览了图书馆,看起来他们没有任何这样做的东西_C++_Boost_Operating System - Fatal编程技术网

获取计算机正在运行的操作系统位 你好,我现在正在研究C++程序,想知道如何检查程序运行的人是使用32位机器还是64位机器。我也愿意使用boost来解决这个问题,但我已经浏览了图书馆,看起来他们没有任何这样做的东西

获取计算机正在运行的操作系统位 你好,我现在正在研究C++程序,想知道如何检查程序运行的人是使用32位机器还是64位机器。我也愿意使用boost来解决这个问题,但我已经浏览了图书馆,看起来他们没有任何这样做的东西,c++,boost,operating-system,C++,Boost,Operating System,谢谢如果您使用的是x86或x86-64,那么最直接的方法就是使用cpuid指令。有一个很好的解决方案,所以您不需要直接处理汇编 看起来这是一个好的开始: int info[4]; __cpuid(info, 0x80000001); bool supports_64_bit = info[3] & 0x20000000; 您可以查看SizeFint*Windows特定链接 我不认为有跨操作系统的方法可以做到这一点。可能重复@KennyTM:我不确定这个问题是否完全是重复的。这个问题指的

谢谢

如果您使用的是x86或x86-64,那么最直接的方法就是使用cpuid指令。有一个很好的解决方案,所以您不需要直接处理汇编

看起来这是一个好的开始:

int info[4];
__cpuid(info, 0x80000001);
bool supports_64_bit = info[3] & 0x20000000;

您可以查看SizeFint*

Windows特定链接


我不认为有跨操作系统的方法可以做到这一点。

可能重复@KennyTM:我不确定这个问题是否完全是重复的。这个问题指的是编译arch,而不是在运行时检测它。我真的不知道OP想要哪个。你想知道CPU、操作系统还是程序的位吗?对于Windows,如果我错了,你可以使用GetNativeSystemInfo纠正我,但这不会告诉你操作系统是32位还是62位。它只会告诉你芯片是32位还是64位。好的,判断操作系统运行的比特数的唯一方法是询问操作系统本身。@John:是的,这只是测试硬件,如果操作系统在64位模式下运行,您可能需要通过系统调用询问操作系统。但OP要求32位机器或64位机器machine@Evan你说得对。OP的问题可能措辞不明确。感谢您的快速回复。。。有没有办法问操作系统运行的是什么windows?@John:我很抱歉这个措辞不明确的问题。。。我是指通过系统调用的操作系统,绝对不是。C++标准没有说明32位机器、64位机器、7位机器或任何其他类型的机器上的int大小,除非说它至少和char一样大。@约翰:这是错误的,即使你已经缩小了实现到Windows、MSVC、特定版本的范围。它仍然没有告诉你在哪台机器上运行,它只告诉你编译代码的目的。在64位机器上运行的32位程序将回答32位,这不会告诉您运行程序的人正在使用哪台机器。