0

64 ビット アプリケーションには 64 ビット Windows が必要であることはわかっています。

64 ビットまたは 32 ビット専用の c/c++ コードはどれですか? 編集:ここで見つけました

実行時にプロセスのワードサイズを決定できますか: OS が 32 ビットか 64 ビットかを返し、適切なワードサイズでサブ/新しいプロセスを実行する 32 ビットアプリケーションがあるように。

4

2 に答える 2

3

システムが 32 ビットか 64 ビットかは、GetNativeSystemInfo. たとえば、次のようなことができます。

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 ビットではないことが既にわかっています)

于 2013-03-22T19:21:04.913 に答える
-1

Windowsについてはよくわかりませんので、明らかにこれは有用性が限られていますが、Linuxでは実行時にワードサイズを決定できます。long int はワード サイズになります。64 ビット Linux では long は 64 ビットで、32 ビット Linux では 32 ビットです。

だから、これは本当にばかげて矛盾しているように見えますが、次のようなことができます

 char ws[3];
 sprintf(ws, "%d", sizeof(long));
 fprintf(stderr, "%s\n", ws);

ws次に、さまざまな値と比較して、単語のサイズを確認できます。Windows には、単語のサイズが何であるかを判断するのに役立つ、同等の基本型があると確信しています。

于 2013-03-22T19:06:31.237 に答える