1. 关键词 关键词:
C++ 标准库 STL 版本 指令集 跨平台
应用场景:
根据C++的版本决定使用不同的函数接口
打印系统日志。
2. sysutil.h 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #pragma once #include <cstdint> #include <string> namespace cutl{ std::string cpp_stl_version () ; }
3. sysutil.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #include <map> #include <iostream> #include <strutil.h> #include <cstdlib> #include "sysutil.h" #include "inner/logger.h" #include "inner/system_util.h" #include "inner/filesystem.h" namespace cutl{ std::string cpp_stl_version () { static std::map<long , std::string> version_map = { {199711L , "C++98" }, {201103L , "C++11" }, {201402L , "C++14" }, {201703L , "C++17" }, {202002L , "C++20" }, }; std::string stlVersion; auto iter = version_map.find (__cplusplus); if (iter != version_map.end ()) { stlVersion = iter->second; } return std::to_string (__cplusplus) + " (" + stlVersion + ")" ; } }
4. 测试代码 1 2 3 4 5 6 7 8 9 #include "common.hpp" #include "sysutil.h" void TestCppStlVersion () { PrintSubTitle ("TestCppStlVersion" ); std::cout << "C++ STL version: " << cutl::cpp_stl_version () << std::endl; }
5. 运行结果 1 2 -----------------------------------------TestCppStlVersion------------------------------------------ C++ STL version: 201103 (C++11)
6. 源码地址 更多详细代码,请查看本人写的C++ 通用工具库: common_util , 本项目已开源,代码简洁,且有详细的文档和Demo。