gpt4 book ai didi

c++ - 使用多个外部库时如何避免 "redefinitions"?

转载 作者:太空狗 更新时间:2023-10-29 20:17:51 29 4
gpt4 key购买 nike

我有两个库(第三方),在每个库中,它们都定义了两个同名的类(在头文件中)。

// Lib A, HeaderA.h
struct mycompare
{
//Some code
};

// Lib B, HeaderB.h
struct mycompare
{
//Same code
};

请注意,在两个库中,mycompare 名称和实现相同。如何同时使用两个头文件?

最佳答案

假设您无法编辑 header /库:

  • 间接:为 A 和 B 中较简单的一个创建您自己的外联包装器,其中仅在实现中包含 HeaderA.h 或 HeaderB.h。
    • 这与 Als 的选项 2 相似,但工作和耦合要少得多;-)
  • 无耻的 hackery:包含 HeaderA.h,然后是 #define mycompare mycompare_duplicate,然后是 HeaderB.h,然后是 #undef mycompare。如果其中一个实现稍后发生更改,这可能会影响您,并且如果 header 稍后使用符号本身(例如,作为函数参数,类型名称重整会有所不同并阻止您的调用被解析),则可能无法实现。

如果您可以编辑这些库,那么显然最好的长期选择是将它们的功能放入单独的命名空间中。

关于c++ - 使用多个外部库时如何避免 "redefinitions"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5775920/

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