Re: [問題] Compile的問題
看板C_and_CPP (C/C++)作者littleshan (我要加入劍道社!)時間15年前 (2011/07/14 18:41)推噓1(1推 0噓 2→)留言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
07/14 19:27, 1F
→
07/14 19:28, , 2F
07/14 19:28, 2F
→
07/14 19:28, , 3F
07/14 19:28, 3F
討論串 (同標題文章)
C_and_CPP 近期熱門文章
PTT數位生活區 即時熱門文章