C ++は標準バージョンとコンパイラを判断します

C ++は標準バージョンとコンパイラを判断します

注:私はオリジナルです。類似点が見つかった場合は、結果に対して責任を負います

開発環境

ほとんどのコンパイラがサポート

原理

C ++ 20
clanggccの判断についてわからない__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 ++バージョンを確認できます

おすすめ

転載: blog.csdn.net/m0_47534090/article/details/108591764