巨集衝突的解決問題

2021-10-08 16:41:36 字數 1377 閱讀 8941

這個問題在10個月前我還需要去找領導,現在終於不用了。感覺好簡單的說。

問題是這樣,我引用了乙個開源庫,包含的它的標頭檔案,顯示巨集衝突。開源庫叫做tao.c、tao.h,我自己的檔案叫okamoto.c(大愛岡本多緒)。

其中tao.h中定義的巨集和okamoto.c中的衝突了,那肯定是ifndef啊,但是如果我把.h中的巨集加上ifndef的話,會不會影響到tao.c中原有的內容呢?我認為是不會的,問了幾個同事,他們不確定,我就自己測試了一下,下面是內容

tao.c

#include

#include

"tao.h"

intmain

(void

)

tao.h

#ifndef x

#define x (1+1)

#endif

okamoto.c

#include

#define x (1+2)

#include

"tao.h"

intmain

(void

)

原來確實是不會的,因為在編譯tao.c的時候x是沒有定義的,所以會選擇進入ifndef,但是在執行okamoto.c的時候巨集已經定義過了,自然就不會ifndef,互相之間並不影響

這個又有點不一樣,不能直接用ifndef了,比如

typedef

unsigned

int ulong;

要是這麼寫就蠢了

#ifndef ulong

typedef

unsigned

int ulong;

#endif

那咋辦嘞,這個很有意思

先看okamoto.c

#include

#define x (1+2)

typedef

unsigned

long ulong;

#define type_conflicting_ulong

#include

"tao.h"

intmain

(void

)

再看tao.h

#ifndef x

#define x (1+1)

#endif

#ifndef type_conflicting_ulong

typedef

unsigned

int ulong;

#endif

有沒有感覺智商受到了侮辱,哈哈哈

git pull 解決問題衝突

git報錯 please commit your changes or stash them before you merge.解決 檢視狀態 1.git status 找出是哪個檔案衝突 2.開啟衝突的檔案自行確定需要的內容 你會在檔案中發現 head ae9a0f6b7e42fda2ce9b14...

解決問題的方法

有些問題從自己所在的世界裡,是找不到答案的。每個文化都有其博大精深的地方,但不可能解決所有的問題。在同乙個狹小的思維中,無法找到答案,無法解決困惑。剛愎自用 驕傲自滿的後果,就是愚昧。所以,無論何時,去接觸新的世界,去接觸原先不以為然的世界,去接觸原先沒接觸過卻自認為感覺不爽的世界,去接觸原先認為不...

解決問題的思路

乙個if else 體現出的解決問題的能力,思路,這就是錢 string tostation string jobj data i agv target place code string mocode string jobj data i mo code 工單 task.receive date ...