我知道64位应用程序需要64位Windows。
哪种c / c ++代码仅适用于64位或32位? 修改:I have found it here
我可以在运行时确定进程字大小:就像我将有32位应用程序,如果OS是32位或64位则返回,然后运行具有正确字大小的子/新进程。
答案 0 :(得分:3)
您可以使用GetNativeSystemInfo
查看您的系统是32位还是64位。例如,你可以这样做:
typedef void (WINAPI *GetNativeSystemInfo_t)(LPSYSTEM_INFO lpSystemInfo);
BOOL IsSystem64Bit()
{
HANDLE kernel32 = LoadLibrary("kernel32.dll");
SYSTEM_INFO si;
GetNativeSystemInfo_t GetNativeSystemInfoPtr
= (GetNativeSystemInfo_t)GetProcAddress(kernel32, "GetNativeSystemInfo");
if (GetNativeSystemInfoPtr == NULL)
return FALSE;
GetNativeSystemInfoPtr(&si);
return (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64);
}
动态解析函数的原因是因为它在XP之前的Windows版本中不存在。 (在那些版本的Windows上,我们已经知道系统不是64位)
答案 1 :(得分:-1)
我不确定Windows,因此显然这会有所帮助,但在Linux上,您可以在运行时确定字大小。 long int将是单词大小。在64位Linux上,32位Linux上的64位和32位长。
所以,这看起来真的很愚蠢和不一致,但你可以做类似
的事情 char ws[3];
sprintf(ws, "%d", sizeof(long));
fprintf(stderr, "%s\n", ws);
然后,您可以将ws
与不同的值进行比较,以查看字数是多少。我确信Windows具有可比较的基本类型,可以帮助您判断字大小。