標頭檔案包含具有傳遞性, 引入不必要的依賴;
標頭檔案是在編譯時使用, 動態庫檔案是在執行時使用, 二者的時間差可能帶來不匹配, 導致二進位制相容性方面的問題;
c++的編譯模型
使用前向宣告來減少編譯期依賴;
c++鏈結(linking)
現在的編譯器聰明到可以自動判斷乙個函式是否適合inline, 因此inline關鍵字在原始檔中往往不是必需的;
現在的c++編譯器採用重複**消除的辦法來避免重複定義(multiple definition), 其餘的則丟棄(vague linkage);
編譯器如何處理inline函式中的static變數?
模板模板編譯鏈結的不同之處在於, 以上具有external linkage的物件通常會在多個編譯單元被定義;
模板的定義要放到標頭檔案中, 否則會有編譯錯誤(鏈結錯誤);
虛函式工程專案中標頭檔案的使用規則
順序性, 乙個原始檔可以包含多個標頭檔案, 但可能會造成程式的語義跟頭檔案包含的順序有關, 也跟是否包含某乙個標頭檔案有關;
差異性, 內容差異造成不同原始檔看到的標頭檔案不一致, 時間差異造成標頭檔案與庫檔案內容不一致;
現代的程式語言, 模組化做得比較好:
標頭檔案的使用規則:
工程專案中庫檔案的組織原則
動態庫比靜態庫節省磁碟空間和記憶體空間, 並且具備動態更新的能力(可以hot fix bug), 似乎動態庫應該是目前的首選;
動態庫是有害的
靜態庫的乙個小缺點是鏈結比動態庫慢, 有的公司甚至專門開發針對大型c++程式的鏈結器;
原始碼編譯是王道
第十章 網路程式設計
1.網路基礎概念 網路程式設計!程式設計 略2.ip協議 ip internet protocol 協議是網際層的主要協議,支援網間互連的資料報通訊。它提供主要功能有 1 無連線資料報傳送 2 資料報路由選擇和差錯控制 3.tcp udp 1 tcp transmission contorl pro...
第十章資料庫筆記
事務的概念 事務 transaction 是使用者定義的乙個資料庫操作序列,這些操作要麼全做,要麼全不做,是乙個不可分割的工作單位。事務和程式是兩個概念 1.在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式 2.乙個程式通常包含多個事務 事務是恢復和併發控制的基本單位 事務的...
第十章 函式
使用def關鍵字 定義個數可變的位置形參 定義個數可變的關鍵字形參 定義預設值引數 定義個數可變的位置形參 deffun1 args 結果為乙個元組 print args fun1 10,20,30 10,20,30 定義個數可變的關鍵字形參 deffun2 args 結果為乙個字典 print a...