加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c – 如何在使用多个外部库时避免“重新定义”?

发布时间:2020-12-16 09:34:15 所属栏目:百科 来源:网络整理
导读:我有两个库(第三方),并且在每个库中,他们定义了两个具有相同名称的类(在头文件中). // Lib A,HeaderA.hstruct mycompare{//Some code};// Lib B,HeaderB.hstruct mycompare{//Same code}; 请注意,在两个库中,mycompare名称和实现都是相同的.如何同时使用两个
我有两个库(第三方),并且在每个库中,他们定义了两个具有相同名称的类(在头文件中).

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

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

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

解决方法

假设您无法编辑标头/库:

>间接:为A和B的简单创建自己的外包装包装,只在实现中包含HeaderA.h或HeaderB.h.

>这与Als的选项2类似,但工作和耦合要少得多;-)

>无耻的hackery:包括HeaderA.h,然后#define mycompare mycompare_duplicate包含HeaderB.h,然后是#undef mycompare.如果其中一个实现稍后更改,这可能会让您感到困惑,如果标头稍后使用符号本身(例如,作为函数参数,其中类型名称 – 修改将不同并阻止您的调用被解析)可能无法实现.

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读