CPU アーキテクチャのコンパイル時間の検出

定義済みアーキテクチャ マクロおよびその他の種類の定義済みマクロに関する情報を次に示します。

この質問は、GCC ソース コードのどこで定義されているかを尋ねます。


コンパイラ間の標準はありませんが、各コンパイラはかなり一貫している傾向があります。次のような独自のヘッダーを作成できます:

#if MSVC
#ifdef _M_X86
#define ARCH_X86
#endif
#endif

#if GCC
#ifdef __i386__
#define ARCH_X86
#endif
#endif

何千ものコンパイラがありますが、広く使用されているのは 3 ~ 4 つだけです (Microsoft C++、GCC、Intel CC、おそらく TenDRA?)。アプリケーションがサポートするコンパイラを決定し、それらの #define を一覧表示し、必要に応じてヘッダーを更新するだけです。


特定のプラットフォームで利用可能なすべての機能をダンプしたい場合は、次のように GCC を実行できます:

gcc -march=native -dM -E - </dev/null

#define __SSE3__ 1 のようなマクロをダンプします。 、 #define __AES__ 1 など