這個問題在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 ...