gpt4 book ai didi

c++ - 如何在一个代码库中支持具有不同命名空间的两个版本的第三方库

转载 作者:行者123 更新时间:2023-12-02 10:11:11 28 4
gpt4 key购买 nike

我有两个版本的第三方 C++ 库(lib.so 和头文件)
在一个版本中,所有的类/枚举/结构都在命名空间“A”中
在另一个版本中,它们位于命名空间“B”中
两个版本的 header 和 lib.so 名称相同
我怎样才能拥有相同的代码库,以便我可以支持两个版本。像这样的东西

if (myVersion == "1.0") {
/* pick all the symbols from namespace "A"*/
} else {
/* pick all the symbols from namespace "B"*/
}

最佳答案

您在代码中建议的是在运行时确定它,这在 C++ 中是不可能的。
如果您的版本是常量,您可以将其声明为宏并使用预处理器进行调节。
正如评论中所说,using namespace不建议使用,命名空间别名可以更好。

#if VERSION == 1000 //...
namespace My = A;
#else
namespace My = B;
#endif
//使用我的::...
但是,如果您坚持使用 using namespace ,
#define VERSION //your version

...

#if VERSION == 1000 //or something like that to mark 1.0.0.0
using namespace A;
#else
using namespace B;
#endif

关于c++ - 如何在一个代码库中支持具有不同命名空间的两个版本的第三方库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63513796/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com