コンパイラによって実装された C 標準の決定
コンパイラによって使用される C 標準のバージョンを検出すると、互換性の確保と効率的なコード開発に役立ちます。これを実現する方法は次のとおりです。
__cplusplus マクロの使用
C 11 では、現在の C 標準を反映する __cplusplus マクロが導入されました。たとえば、C 11 では、__cplusplus は 201103L になります。ただし、gcc や MSVC などの一部のコンパイラでは、このマクロが常に正しく設定されるとは限りません。
コンパイラ固有のチェック
__cplusplus が十分でない場合は、コンパイラ固有のチェックに頼ってください。小切手。たとえば、clang は __clang_major__、__clang_minor__、および __clang_patchlevel__ を定義します。同様に、MSVC は _MSC_VER を定義します。
機能の比較
もう 1 つのアプローチは、実装された機能を既知の C 標準と比較することです。 Cppcheck や Static ReSharper などのツールは、コードを分析してサポートされている機能をレポートし、実装されている標準を識別できるようにします。
Boost.Config
Boost.Config は、次のことを示す特定のマクロを提供します。 BOOST_CXX_STD_11、BOOST_CXX_STD_14 などの C 標準バージョンon.
古いコンパイラ
前述の方法をサポートしていない可能性がある古いコンパイラの場合は、サポートされている機能を検出して動作するためにコンパイラ バージョン固有のハックまたは Boost.Config を使用することを検討してください。
機能固有チェック
機能を正確にチェックするには、コンパイラのビルド システムの使用を検討してください。特定の機能を使用するコードを実行し、コンパイル結果を調べます。 Autoconf は、このアプローチでよく使用されるツールです。
コンパイラ サポート マトリクス
Stdcxx Wiki は、C 0x 機能のコンパイラ サポートの包括的なマトリクスを提供します。ただし、より詳細な分析を行うには、手動による特徴チェックをお勧めします。
以上がコンパイラが使用している C 標準を確認するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。