Re: [問題] Compile的問題

看板C_and_CPP (C/C++)作者 (我要加入劍道社!)時間15年前 (2011/07/14 18:41), 編輯推噓1(102)
留言3則, 1人參與, 最新討論串2/2 (看更多)
※ 引述《mida (實況「野球」魂)》之銘言: : 所以我應該要怎樣修正,可以讓這2個程式可以共用MyLib.lib, : 而MyApp1.exe看不到也不會include Function2, : 但MyApp2.exe則可以呢? : 而且前題是MyLib.lib, MyApp1.exe, MyApp2.exe修改好後,不用在額外改code, : 各compile一次就可以達到這樣的目標呢? 方法就像推文中所說的那樣,在 compile MyLib 的時候加入 __INCLUDE_FUN2__, 這麼一來 MyLib 裡面會有 Function2() 的定義。(MyApp2要用的) 然後在 compile MyApp1 的時候,不要加入 __INCLUDE_FUN2__, 這麼一來 MyApp1 將無法呼叫 Function2()。 不過,奉勸你不要做這種事。 上述的法方之所以可行,是因為 Library 中添加 function 這件事是向上相容的, 也就是說多了 Function2 的 MyLib 相容於沒有 Function2 的版本 因此 MyApp1 才能正常使用。 但是許多對 Library 的修改並無向上相容,比如說: class MyLib2 { public: int Function1(); #ifdef INCLUDE_NAME std::string name; #endif }; 很不幸的,這種情況下同一招不管用, 因為一來 MyLib2 這個 class 在不同的情況下會有不同的大小, 另一方面,在含有 name 這個 member variable 的情況下, 建立物件時需要呼叫 ctor, 而不含任何 member variable 的時候 compiler 通常會省略 ctor。 建議你把會變動的部份獨立成另一個函式庫, 否則很容易踩到這種地雷。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 114.32.15.163

07/14 19:27, , 1F
謝謝說明,我本來以為我遇到的問題很單純所以想了我前篇po的
07/14 19:27, 1F

07/14 19:28, , 2F
例子來發問,但經過你一解釋,我發現我現在遇到的case剛好是
07/14 19:28, 2F

07/14 19:28, , 3F
你說的地雷.....囧,看來要新建Lib比較實際。
07/14 19:28, 3F
文章代碼(AID): #1E7iVTX7 (C_and_CPP)
討論串 (同標題文章)
本文引述了以下文章的的內容:
0
2
完整討論串 (本文為第 2 之 2 篇):
0
2
文章代碼(AID): #1E7iVTX7 (C_and_CPP)