閱讀643 返回首頁    go 阿裏雲 go 技術社區[雲棲]


不要重複發明輪子:C++重用的5重境界(2)——簡單DLL

 

第二重境界:簡單DLL

稍有經驗的人都知道,要解決代碼重用的問題其實已經有簡單的方法了,那就是動態鏈接庫(Windows平台是DLLLinux/UNIXso,下麵以DLL為例說明)。

簡單的DLL實現如下:將對象、方法的定義放在DLL裏麵,使用時隻需要包含DLL的頭文件即可。

這樣簡單的一個設計,就能夠解決代碼重用的一個大問題:一份DLL隻占一份磁盤空間、一份內存空間

但為什麼我沒有說解決了另外一個大問題——編譯的問題呢?

乍一看好像是解決了編譯的問題,例如我修改函數體內的某個執行語句,或者加一個邏輯判斷,隻需要編譯DLL就可以了呀!

如果隻修改函數體那當然是沒有問題,但關鍵是世界沒有那麼完美和簡單,我們可以做很多的修改,例如:

1)  修改類定義:例如增加一個成員變量。

2)  修改函數定義:例如增加一個函數參數,修改某個入參類型;

3)  修改函數體:例如增加一個語句,一個調用等。

以上修改除了第三種修改隻需要編譯DLL外,其它兩種修改都需要重新編譯整個項目,也就是說,DLL能夠解決空間和編譯的部分問題,不能解決所有的編譯問題。

革命尚未成功,同誌還需努力!!

 

========未完待續,後麵更精彩===========

 

最後更新:2017-04-02 00:06:45

  上一篇:go 在WAS 6.1裏為NodeAgent創建Windows係統服務
  下一篇:go PHP實現MVC開發得最簡單的方法——單點入口