衝突宣告(conflicting declaration)解決
阿新 • • 發佈:2018-11-24
使用到的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來中轉。