//foo.cc包含頭文件的次序(foo.cc是foo.h的實現文件) 1.foo.h //優先位置 2.C system file 3.c++ system file 4.其他庫的.h文件 5.本項目內的.h文件 原因: 這種優先順序排序保證黨foo.h遺漏必要的庫時,foo.cc的構建會立刻終止。這條規則保證維護這些文件的人們首先看到構建終止的消息而不是維護其他包的人們 按字符順序分別對每種類型的頭文件進行二次排序是個不錯的主意。但是較老的代碼不一定符合這條規則,要在方便的時候更改它們。
note:你所需要的symbols被哪些頭文件所定義,你就應該include哪些頭文件,forward declarations除外。
for example:不如你要用bar.h中的某個symbol,哪怕foo.h中已經包含了bar.h,除非foo.h有明確的說明它會向你自動提供bar.h中的symbol.不過凡事cc文件所對應的頭文件已經包含的,就不用再重復包含進cc文件里面了,就像foo.c只包含foo.h就夠了,不用再管了后者所包含的其他內容