不要重複發明輪子:C++重用的5重境界(2)——簡單DLL
第二重境界:簡單DLL
稍有經驗的人都知道,要解決代碼重用的問題其實已經有簡單的方法了,那就是動態鏈接庫(Windows平台是DLL,Linux/UNIX是so,下麵以DLL為例說明)。
簡單的DLL實現如下:將對象、方法的定義放在DLL裏麵,使用時隻需要包含DLL的頭文件即可。
這樣簡單的一個設計,就能夠解決代碼重用的一個大問題:一份DLL隻占一份磁盤空間、一份內存空間。
但為什麼我沒有說解決了另外一個大問題——編譯的問題呢?
乍一看好像是解決了編譯的問題,例如我修改函數體內的某個執行語句,或者加一個邏輯判斷,隻需要編譯DLL就可以了呀!
如果隻修改函數體那當然是沒有問題,但關鍵是世界沒有那麼完美和簡單,我們可以做很多的修改,例如:
1) 修改類定義:例如增加一個成員變量。
2) 修改函數定義:例如增加一個函數參數,修改某個入參類型;
3) 修改函數體:例如增加一個語句,一個調用等。
以上修改除了第三種修改隻需要編譯DLL外,其它兩種修改都需要重新編譯整個項目,也就是說,DLL能夠解決空間和編譯的部分問題,不能解決所有的編譯問題。
革命尚未成功,同誌還需努力!!
========未完待續,後麵更精彩===========
最後更新:2017-04-02 00:06:45