C ++は標準バージョンとコンパイラを判断します
注:私はオリジナルです。類似点が見つかった場合は、結果に対して責任を負います
開発環境
ほとんどのコンパイラがサポート
原理
C ++ 20
clangとgccの判断についてわからない__cplusplus
__cplusplus の価値 |
|
---|---|
C ++ 17 | 201703L |
C ++ 14 | 201402L |
C ++ 11 | 201103L |
C ++ 03以下 | 199711L |
MSVC判断_MSVC_LANG
_MSVC_LANG の価値 |
|
---|---|
C ++ 17 | 201703L |
C ++ 14 | 201402L |
C ++ 11 | 201103L |
C ++ 03以下 | 199711L |
使用するコンパイラを決定する
大きい | |
---|---|
msvc | _MSC_VER |
クラン | __clang__ |
gcc | __GNUC__ |
成し遂げる
// cpp.hpp
#ifndef CPP_HPP
#define CPP_HPP
#if defined(__clang__) || defined(__GNUC__)
#define CPP_STANDARD __cplusplus
#elif defined(_MSC_VER)
#define CPP_STANDARD _MSVC_LANG
#endif
#if CPP_STANDARD >= 199711L
#define HAS_CPP_03 true
#elif CPP_STANDARD >= 201103L
#define HAS_CPP_11 true
#elif CPP_STANDARD >= 201402L
#define HAS_CPP_14 true
#elif CPP_STANDARD >= 201703L
#defined HAS_CPP_17 true
#endif
#endif
結論として
コードと互換性を最適化するために、使用するC ++バージョンを確認できます