ドナドナされるプログラマのメモ

Windows用アプリのプログラミングメモ

Visual Studioのコード上で32bit用コードと64bit用コードを切り替える

Visual StudioにてC / C++のプログラミングをする際に、32bit向けと64bit向けでコードを変えたくなる場合がある。切り替え自体は当然#ifdefでやるのだが、どの定数で判定するのが良いのだろうか?以下、整理してみた。情報ソースはマイクロソフトの以下記事。

docs.microsoft.com

  • _WIN32
    x86, x64, 32bitARM, 64bitARMのときに1。64bitでも1な点に注意。Windows環境のときのみ何かしたい場合に有用?
  • _WIN64
    x64, 64bitARMのときに1。Windows環境かつ64bit環境のときのみ何かしたい場合に有用。
  • _M_IX86
    x86のときに600。x86のときのみ何かしたい場合に有用。ARM他は別途判定が必要。
  • _M_X64
    x64のときに100。x64のときのみ何かしたい場合に有用。ARM他は別途判定が必要。
  • _M_ARM, _M_ARM64, _M_ARM_ARMV7VE, M_AMD64
    名前から察してください。なおAMD64AMD専用プログラムにする場合のみ指定?Intel/AMD両方用なら_M_X64を指定するのが正しそう。