« 备份的苦恼 | Main | 终于回到了纯爷们儿的状态 »

忍……

前几天clive大长辈发了杨维中的《新同事》给我,Jeff Huang的歌词摘录如左:

喔耶,爆炸吧~爆炸吧!

愛用 .lib 嘛… 爆炸吧!
愛亂用 global variable 嘛… 爆炸吧!
愛亂 call function 嘛… 爆炸吧!
愛 copy & paste 嘛… 爆炸吧!

喔耶,我聽到 windiff 了,爆炸吧!爆炸吧~~~

(在 VC6 裡,做 .lib 時,是不會檢查 dependency 的。也就是說,如果你呼叫了另外一個 .lib 的 function,只有 compiler 會檢查該 function 有否宣告過,linker 不會檢查該 symbol 是否存在。因此,如果 include path 有設,header 也有 #include,就不會顯示任何錯誤。必須要等到用該 .lib 的人,在做 .exe 或 .dll 時,才會產生 missing symbol 的錯誤。

另外,.lib 相當於是把所有 function 都赤裸裸地開放出來,這樣就沒有所謂的「模組介面」,因此很容易就會亂呼叫 function,而沒有注意到,呼叫了不應有相依關係的 component 裡的函式。又由於前述不會有 missing symbol 錯誤的關係,而無法察覺這樣的錯誤,因而導致最終程式的 dependency 關係會一團亂。

亂 call function,除了上面「呼叫了不應有相依關係的 component 裡的函式」的狀況之外,還包含了「喜歡自行在 .c/.cpp 檔前面,重複宣告函式,而不是用 #include 將對應的 header 引入」。 這會造成當所依存的 component 更新,prototype 改變時,會無法於 compile-time 察覺,若僅 prototype 改變,function name 不變的話,甚至連 link-time 也不會產生 error,假使 test-time 還是無法測到這個問題,那就等著在客戶那邊爆炸。)

当时觉得很好玩。现在我也想跟着唱,爆炸吧,爆炸吧……虽然不是同一件事 XD

Comments (3)

alfantor:

顺便问一句,delphij有用过工商银行的网银么?怎么样?我觉得建行的动态口令卡垃圾了,只能用30次/张,有意换工行的。

没有。我目前还没有使用过国有银行的服务。

snnn:

我差点以为.lib是在说gnu的libtool。

Post a comment

Advertise

About

This page contains a single entry from the blog posted on May 24, 2007 11:41 PM.

The previous post in this blog was 备份的苦恼.

The next post in this blog is 终于回到了纯爷们儿的状态.

Many more can be found on the main index page or by looking through the archives.

Creative Commons License
This weblog is licensed under a Creative Commons License.
Powered by
Movable Type 4.01