C++如何判断是64位系统还是32位系统 不用sizeof

2026年09月29日 02:16
有3个网友回答
网友(1):

方法1,msdn 有相应的例子,代码贴出来给你看看

MSDN有相应Example!

#include

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);

LPFN_ISWOW64PROCESS
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle( "kernel32 "), "IsWow64Process ");

BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;

if (NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{// handle error
std::cout < < "Handle Error " < }
}
return bIsWow64;
}

方法2:
GetSystemWow64Directory
判断这个文件夹是否存在

网友(2):

判断系统的我不知道,判断编译器的我知道一个。
通过把1不停左移一位,但数值变成0的时候,就是越出了int范围,这些左移次数就是int多少位了。

#include
#include

int main()
{
int v,n;
for(v=1,n=0;v;(v<<=1),n++);
printf("sizeof(int)=%d\n",n);

system("pause");
return 0;
}

网友(3):

方法1,msdn 有相应的例子,代码如下:

#include
typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL);
LPFN_ISWOW64PROCESS
fnIsWow64Process = (LPFN_ISWOW64PROCESS)GetProcAddress(
GetModuleHandle( "kernel32 "), "IsWow64Process ");
BOOL IsWow64()
{
BOOL bIsWow64 = FALSE;
if (NULL != fnIsWow64Process)
{
if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64))
{// handle error
std::cout < < "Handle Error " < }
}
return bIsWow64;
}

方法2:
GetSystemWow64Directory
判断这个文件夹是否存在