web-dev-qa-db-ja.com

64ビットビルドで_WIN32と_WIN64の両方を定義する必要がありますか?

既存の32ビットプロジェクトから64ビット構成を追加すると、Visual Studioはデフォルトで32ビット構成をコピーします。 VSもコピー_ WIN32
すべての私の64ビットプロジェクトも定義します_ WIN32今では、それら(64ビットPE)は32ビットWindowsでは実行できません。それは私にとって非常に不快です。

_ WIN32に問題がなければ削除したいのですが。それについてはよくわかりません。
_ WIN32定義を削除しても大丈夫ですか?

29
Benjamin

_WIN32は、あなたが考えていることを意味するものではありません。 「Windows APIを使用しています」という意味です。 32の接尾辞は、Windows NT 3.1の時代に追加され、Windowsバージョン3で使用されていた16ビットAPIと区別するために追加されました。これは、stackoverflow.comで確認できます。[win32]タグで[winapi]にアクセスできます。

削除しないでください。WindowsAPIを使用しています。

56
Hans Passant

事前定義されたマクロ のドキュメントには次のように書かれています:

_ WIN32:Win32およびWin64のアプリケーション用に定義されています。常に定義されています。

_ WIN64:Win64のアプリケーション用に定義されています。

したがって、_WIN32常に定義されているため、64ビットアプリケーションで問題が発生することはありません。したがって、削除しないことをお勧めします。

37

どちらも定義しないでください。

コンパイラはそれらを適切に定義します。

9
Ben Voigt

_WIN32:Win32およびWin64のアプリケーション用に定義されています。常に定義されています。

_WIN64:Win64用のアプリケーション用に定義されています。

詳細: 定義済みマクロ

簡単に言えば、WIN32/_WIN32を使用してWindows(クロスシステムアプリケーション用)を使用しているかどうかを通知し、_WIN64を使用してコンパイル環境がx86またはx64であることを通知します。

アプリケーションがWindows x64で実行されているかどうかを知りたい場合は、Windows API IsWow64Process を使用する必要があります。

3
Dana Yan