32 ビット プラットフォームの #ifdef

適切な普遍的な #if def があるかどうかはわかりません。 C++ 標準では、ほぼ確実に定義されていません。ただし、プラットフォーム固有のものは確かにあります。

たとえば、Windows

#if _WIN64 
// 64 bit build
#else
// 32 bit build
#endif

編集 OPは、これはGCCと他のコンパイラを使用したWindowsと非Windows間のクロスコンパイルであると述べました

すべてのプラットフォームとコンパイラで使用できるユニバーサル マクロはありません。ただし、プリプロセッサの魔法を少し使用すると、うまくいく可能性があります。 x86 および amd64 チップのみで作業していると仮定すると、次の方法でうまくいくはずです。ただし、他のプラットフォーム用に簡単に拡張できます

#if _WIN64 || __amd64__
#define PORTABLE_64_BIT
#else
#define PORTABLE_32_BIT
#endif

Predef SourceForge をブックマークすることをお勧めします。答えは 1 つではありませんが、始めるのに役立つことは間違いありません。

編集:GCC のみのコードの場合、 __i386__ を使用できます 32 ビット x86 チップを確認するには、 __X86_64__ を試すことをお勧めします または、64 ビット x86 チップのチェックに似たもの。 (注:以前の回答が __ia86__ を含むことに気づきました 実際には、64 ビット x86 チップではなく、別のチップです。これは、ハードウェアの経験が不足していることを示しています。私よりもハードウェアに詳しい人は、上記のリンク先の定義済みマクロに関する SourceForge ページを参照してください。私よりもはるかに正確です。) 動作するものは他にもいくつかありますが、これらの 2 つは GCC バージョン間でかなり普遍的なはずです。


それを見てください:

i386 マクロ
AMD64 マクロ