1. 程式人生 > >衝突宣告(conflicting declaration)解決

衝突宣告(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來中轉。