推 loveme00835:1.用 namespace 分開型別定義 08/13 13:43
→ loveme00835:為了方便你可以自己提供兩種標頭檔, 有/無 using 08/13 13:44
→ loveme00835:namespace 的版本, 這也是標準庫表頭檔常用的方法 08/13 13:45
→ tinlans:請直接 #include "a.h",不然就叫他把 enum 定義切到單獨 08/13 13:46
→ tinlans:的 header 去。我比較奇怪的是你想重複定義 enum A 幹嘛。 08/13 13:46
→ tinlans:需要維持一致性的東西,就讓它只出現在一個地方。 08/13 13:49
→ adxis:大概如他所說不想 include a.h 吧 08/13 13:49
→ QQ29:所以全部拉出來嗎 因為我也不好意思叫他改.... 08/13 13:50
→ QQ29:我只需要用到這enum A其他都不干我的事 所以不知該怎辦 08/13 13:50
→ tinlans:那就乖乖 include a.h 啊,又不是 286 的機器怕什麼。 08/13 13:51
→ tinlans:現在的 CPU 執行一個指令連 1ns 用不到。 08/13 13:52
→ tinlans:你怕衝名稱而不去 include,linking time 一樣衝 symbol。 08/13 13:53
→ tinlans:重複把別人定義的東西在自己這邊重新定義一份, 08/13 13:55
→ tinlans:怎麼看 100% 都是你錯,到時候出事只有你被罵。 08/13 13:55
→ tinlans:不好意思叫他改 <--- 團隊合作就是需要練習溝通... 08/13 13:56
→ tinlans:學工程的,只要是對的事情,沒那麼難講話。 08/13 13:57
→ loveme00835:說不定自己定義是因為數值上有什麼需要改吧 ? 08/13 14:06
→ loveme00835:例如 enum BOOL{ TRUE, FALSE }; 這個用起來就不方便 08/13 14:09
→ tinlans:從他的描述來看明顯是閃避引入太多東西直接 copy 過去。 08/13 14:38
推 alongalone:能用 ifdef 去解決嘛 08/13 17:25
→ QQ29:ifdef不能解決吧?對兩個cpp來說都是 not def不是嗎? 08/13 17:54
→ QQ29:想一想a大意思是 a.h define一個XXX 然後我的b.h用ifdef去夾 08/13 18:01
→ QQ29:enum嗎? 08/13 18:01
推 VictorTom:推t大說的:) 08/13 19:55
推 VictorTom:至於dep的問題, 小弟我不太清楚您的狀況, 如果A要用B, 08/13 19:59
→ VictorTom:那就A裡直接dlopen B出來, 或者proj編譯時設好dep吧?? 08/13 19:59
→ VictorTom:系統service自己也有dep的問題, 所以順序這種事應該是 08/13 20:00
→ VictorTom:肯定能解決的@_@" 08/13 20:00
→ QQ29:V大意思是 順序可以predefine的嗎? 08/14 00:02
推 VictorTom:我的意思是, 你是要A.dll自己去load B.dll嗎?? 是的話, 08/14 00:13
→ VictorTom:不管是直接link .lib自己在process start-up時, 還是 08/14 00:13
→ VictorTom:A.dll runtime時自己dlopen B.dll, 應該都沒有問題啊?? 08/14 00:14
→ VictorTom:或者你是A.dll註冊一個service, 然後B.dll是另一個 08/14 00:14
→ VictorTom:service, 其中A要dep on B的service?? 是的話, 考量到 08/14 00:14
→ VictorTom:windows本來就有些service有dep, 用service manager也 08/14 00:15
→ VictorTom:可以查到相依性, 所以理論上應該存在方法建立起AB之間 08/14 00:16
→ VictorTom:的關係, 以達成你想要A service起來時能和已經ready 08/14 00:16
→ VictorTom:的B service溝通這件事, 只是方法還有待研究就是了. 08/14 00:17
→ VictorTom:如果不是以上兩者, 只好請你再描述清楚具體你要什麼@_@" 08/14 00:17
→ VictorTom:不過小弟的認知還在.dll是給process load的, 不曉得如果 08/14 00:19
→ VictorTom:是service那種情形到底會怎麼(還是能不能?)運作....Orz 08/14 00:20
推 yoco315:正確答案是1,男人這個時候也得選1 08/14 08:37
→ tinlans:不然你可以寫一個簡單的 parser,去掃你同事的 header 檔 08/14 09:14
→ tinlans:,把那個 enum 定義複製出來導向另一個 header。 08/14 09:14
→ tinlans:但是你最好祈禱你同事不管怎樣改 code,你的 parser 都 08/14 09:15
→ tinlans:不會出現 bug,不然下場還是只有你被罵。 08/14 09:15
→ tinlans:80 年代的大混沌時期真的有一些人幹過這種事。 08/14 09:16
→ tinlans:甚至還有什麼 source editor,功能類似 autoconf 會去偵測 08/14 09:16
→ tinlans:系統組態。但它偵測完還會自動修改 source code 而不是用 08/14 09:17
→ tinlans:macro。現在幹這種事大概直接被拖去廁所打了。 08/14 09:17
→ tinlans:不過在那個年代幹這種事,卻會有很多人拍手說你好神 XD 08/14 09:25
推 kevingwn:如你所願稱心如意的隨你搞啦~ 08/14 12:34
→ kevingwn:最簡單的方法,跟同事說以後a,b都給你maintain,那就可以 08/14 12:35
→ kevingwn:oops...請將前面兩句顛倒來看orz 08/14 12:36
推 mingtai1:個人意見:好的Design,API部分不該跟細節的實作放在一起 08/14 23:20
→ mingtai1:a.cpp的enum是給人用的,裡面卻又有一堆只有自己用的東西 08/14 23:21
→ mingtai1:可能design上面就有點問題.如果初期權責沒劃分好就會這樣 08/14 23:23