衝突聲明(conflicting declaration)解決

使用到的2個庫文件,重複定義了同名的數據類型。

1、在後一個引用的定義的地方(比如uint64這個類型被重複定義)
 

#ifdef uint64

#undef uint64

#define unsigned long long uint64 

將前一個定義“undefine”,重新定義一個。這個要求衝突的2個定義必須是相同類型(都是unsigned long long),不然前一個文件中使用到的地方就會報錯。

 

2、新建一箇中間文件,interface.h和interface.cc

在.h文件中,定義新的數據類型和方法,內容爲使用到的庫2的數據類型和方法。在其他文件調用庫2方法的地方,全部轉換爲調用.h中新定義的數據類型和方法。其中void myset()函數內部調用庫2中的方法。

class interface{
public:
    struct a{
        sss
    }

    void myset();

在.cc文件中

#include "interface.h"

extern {
    庫2.h
}

extern 庫2的數據類型
extern 庫2中使用到的方法

void interface::myset(){
    庫2中的方法;
}

通過這種方法將庫2和使用的地方隔離開來,完全通過interface來中轉。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章