看板 C_and_CPP 關於我們 聯絡資訊
最近再看google的coding style http://google-styleguide.googlecode.com/svn/trunk/cppguide.xml 有些地方不是很懂 <Question 1> Header Files ... Correct use of header files can make a huge difference to the readability, size and performance of your code. 我只知道若include不必要的header file會造成compile的時間變長, build出來的.exe檔會比較大 但是正確的引入header file為什麼會對readability和performance造成影響呢? <Question 2> The #define Guard All header files should have #define guards to prevent multiple inclusion. The format of the symbol name should be <PROJECT>_<PATH>_<FILE>_H_ 印象中使用#pragma once也可以達到相同的效果, Google規定使用#define guards的原因是因為#pragma once是VC的comiler限定嗎?? <Question 3> Names and Order of Includes Use standard order for readability and to avoid hidden dependencies: C library, C++ library, other libraries' .h, your project's .h. 這樣規定的好處是什麼呢? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.116.153.199
adxis:code 需要給作者以外的人 review 時就會有差了 11/11 18:04
stimim:減少檔案之間的相依性可以讓測試程式比較好寫 11/11 18:06
diabloevagto:高內聚,低偶合 11/11 18:08
tjjh89017:也就是說在std lib裡沒有的就盡量自己寫(? 11/11 19:09
privatewind:q2 是你說的 也不是你說的 11/11 20:01
privatewind:q2 是google要強調如果你有寫自己的library就要避免 11/11 20:01
privatewind:重覆定義的問題發生 那#define guard是最好的solution 11/11 20:01
privatewind:提供解法時 當然是給最好的一個 只是他強調的是要注 11/11 20:02
privatewind:重覆定義的問題 11/11 20:02
MOONRAKER:你們要不要各自寫一篇對這幾條的「解釋」 真是精彩 |D 11/11 23:25
MOONRAKER:這幾條根本是看過去記起來就好的東東 不需要一直窮究 11/11 23:26
MOONRAKER:style非rule 他提供他認為較好的方式 你不一定全部採納 11/11 23:29
adxis:看處於哪個學習階段吧,學習中去想為什麼很好啊 11/11 23:57
rodion:最後一條看過另一個說法 應該先include .cpp對應的.h 11/12 12:15
rodion:如此才能確保每個.h都是self-compilable 即不依靠其他.h就 11/12 12:15
rodion:能通過編譯 這邊我覺得比google style合理 11/12 12:16
shadow0326:google style可以避免連.h裡用個string都要predeclare 11/12 12:27
littleshan:.h裡面用到string的情況,應該直接在.h裡面include 11/12 12:37
littleshan:因為.h用到不代表使用它的.cpp有用到 11/12 12:38
littleshan:google style說得很清楚,這是為了容易理解相依性 11/12 12:39
littleshan:把相關的部份放在一起,你一看就知道用了C++的哪些lib 11/12 12:40
littleshan:哪個先哪個後我認為並不是很重要,但統一順序是好的 11/12 12:42
purpose:rodion 說的另一個說法,其實就是 google 自己的說明寫的 11/12 12:51
rodion:謝樓上 確實如此 原PO的文章沒寫第一個order 11/12 16:33
rosemary0401:Thanks a lot 11/12 21:47
tinlans:q3 另一個用意是把較可靠的放前,較不可靠的放後。 11/13 04:34
tinlans:不然自己寫錯的時候可能錯誤訊息會出現在 std header 上, 11/13 04:35
tinlans:因為你自己寫的 header 漏了什麼,造成往下炸過去。 11/13 04:35
tinlans:弄不清楚狀況的人,可能以為是 std header 有 bug... 11/13 04:36