作者tropical72 (藍影)
看板C_and_CPP
標題Re: [問題] 條件編譯 / 獨體模式 問題
時間Sun Jan 29 20:44:02 2012
一時可能還無法意會,想再多請教幾個問題
※ 引述《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