看板 C_and_CPP 關於我們 聯絡資訊
一時可能還無法意會,想再多請教幾個問題 ※ 引述《littleshan (我要加入劍道社!)》之銘言: : 所以我是這樣做的: : #include "stdafx.h" : #include <vector> : #include <map> : ... : 也就是同時引用了 all_header.h 與該 .cpp 使用到的 header : 這麼一來 以 vc 而言, stdafx.h / stdafx.cpp 是預設之 precompiled header 無誤, 沒記錯的話之前閱過一些 mfc 的書 (恕我忘了出自哪本), 曾提到把 "常用、幾乎不會變" 的 header 丟進 stdafx.h, 藉此增快編譯速度,故網路上一些私人寫的專案裡, 會看到 ctime/cstdio/cstdlib/cmath 等常用之 C library header。 這麼做的缺點是否如您所言:無法看出模組間之相依性? 若真如此,這麼做是否就等於是在 "編譯速度" 與 "維護性" 做權衡之選擇? 若再依該準則時,那些 vector、map、string... 常用到之 class / container, 也會一起塞到 stdafx.h,以期快編譯速度,接下來是另一問題: : 1. 在不支援 precompiled header 的 compiler 上,可以使用空的 stdafx.h : 這麼一來就不會浪費 compile time 承如您所言,若編譯器本身不支援 precompiled header,使用stdafx.h (all_header.h) 進行編譯,會顯得較慢? (我以為常用的塞到 all_header.h 會使編譯速度較快 XD) : 2. 你看最前面就知道這個 .cpp 用到哪些 header : 3. 因為 header 都使用了 include guard,所以這樣寫並不會造成重覆引入 : : 問題二:獨體模式 獨體模式問題感謝您的意見。 最後謝謝 littleshan 大不吝指導。 -- 世界上有種, 不可能 轉換為 無限可能 的強大力量, 我稱它為 - 信念 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 123.195.165.40
LPH66:不支援pch的話 .h就只是單純複製貼上而已 01/29 20:48
LPH66:所以會重覆編譯已經編過的標頭檔案 01/29 20:49
LPH66:這正是pch所想解決的問題 01/29 20:51
tropical72:原來如此,感謝 LPH66 說明 ^^ 01/29 20:54