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.如果其中一个实现稍后更改,这可能会让您感到困惑,如果标头稍后使用符号本身(例如,作为函数参数,其中类型名称 – 修改将不同并阻止您的调用被解析)可能无法实现. 如果您可以编辑库,那么显然最好的长期选择是将其功能放入单独的命名空间. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |