我有两个库(第三方),在这些库中的每一个中,他们都定义了两个具有相同名称的类(在头文件中)。
// Lib A, HeaderA.h
struct mycompare
{
//Some code
};
// Lib B, HeaderB.h
struct mycompare
{
//Same code
};
请注意,在两个库中, mycompare 名称和实现都是 相同的 。如何同时使用两个头文件?
最佳答案
假设您无法编辑标题/库:
#define mycompare mycompare_duplicate
,然后是 HeaderB.h,然后是 #undef mycompare
。如果稍后的实现之一发生变化,这可能会咬你,如果 header 稍后使用符号本身(例如,作为函数参数,其中类型名称修改会不同并阻止你的调用被解析),这可能会咬你。 如果您可以编辑库,那么显然最好的长期选择是将它们的功能放入单独的命名空间中。
关于c++ - 使用多个外部库时如何避免 "redefinitions"?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5775920/