C ++ Judge versión estándar y compilador
Nota: soy original, si encuentras similitudes tu serás responsable de las consecuencias
Entorno de desarrollo
La mayoría de los compiladores admiten
principio
C ++ 20 No estoy seguro sobre el juicio de
clang y gcc__cplusplus
__cplusplus Valor de |
|
---|---|
C ++ 17 | 201703L |
C ++ 14 | 201402L |
C ++ 11 | 201103L |
Por debajo de C ++ 03 | 199711L |
juicio de msvc_MSVC_LANG
_MSVC_LANG Valor de |
|
---|---|
C ++ 17 | 201703L |
C ++ 14 | 201402L |
C ++ 11 | 201103L |
Por debajo de C ++ 03 | 199711L |
Determine el compilador utilizado
Macro | |
---|---|
msvc | _MSC_VER |
sonido metálico | __clang__ |
gcc | __GNUC__ |
lograr
// 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
En conclusión
Para optimizar el código y la compatibilidad, puede determinar la versión de C ++ utilizada