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 __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