我有一个项目,严格使用C++14编写,并且我想在另一个使用C++17的项目中使用它。一些C++14的特性,比如动态异常规范在C++17中被移除了。
有没有办法同时使用和编译这两个代码库?这个项目足够大,使得重构变得不切实际。
有没有办法同时使用和编译这两个代码库?这个项目足够大,使得重构变得不切实际。
void foo() {
#if __cplusplus >= 201703L
// code written for C++17 goes here
#else
// code written for C++14 goes here
#endif
}
__cplusplus
宏列表如下:#if __cplusplus >= 199711L // C++98
#if __cplusplus >= 201103L // C++11
#if __cplusplus >= 201402L // C++14
#if __cplusplus >= 201703L // C++17
#if __cplusplus >= 202002L // C++20
#if __cplusplus >= 201703L // C++17
#define THROWS(...) noexcept(false)
#else
#define THROWS(...) throw(__VA_ARGS__)
#endif
// now you can use it like this in both C++14 and C++17:
void fun() THROWS(MyException);