複数のプラットフォーム用のソフトウェアを開発する人にとって、コンパイラーが他のコンパイラーよりも特定のことをうまく行う可能性をどのように処理しますか。
OS X、Windows、Linux用に開発し、Clang / LLVM、VS、GCCを使用しているとします。
したがって、誰かがOS Xでアプリをコンパイルし、GCCを使用していて、別の人がIntelコンパイラを使用してOS Xでコンパイルしている場合、その人が持っていれば、Intelコンパイラのコードのセクションを最適化できます。
プリプロセッサディレクティブをチェックしますか?
#ifdef __GCC_
// do it this way
#endif
#ifdef __INTEL__
// do it this way
#endif
#ifdef __GCC_WITH C++_V11_Support__
// do it this way
#endif
#idfef __WINDOWS_VISUAL_STUDIO
// do it this way
#endif
それとももっと良い方法はありますか?
コンパイラがコンパイラのバージョンなどをチェックするために提供するディレクティブのリストをどのように見つけるのですか?