2012-04-06 83 views
0

有在a question about header ordering一個高度評價響應與以下建議:頭,不cpp文件,幷包括訂購

良好做法:每個.h文件中應該有一個.cpp包括別的之前.H第一。這證明任何.h文件都可以放在第一位。

即使頭部不需要實施,請一個.cpp,僅僅包括.h文件中,並沒有別的。

就我個人而言,我從來沒有遇到包含沒有相應cpp文件的頭文件排序的問題。這種最佳做法會阻礙什麼樣的問題?

+0

這可以防止一個問題,如果兩個頭文件中都有相同的命名定義(無論何種原因),或者如果一個頭包括另一個和頭部沒有'的#ifndef HEADER_H的#define HEADER_H'在裏面。 – twain249 2012-04-06 17:07:09

+0

這種做法可確保每個頭都列出了所有的依賴關係。頭文件使用'std :: vector'是很常見的,但不包含'',並且永遠不會注意到,因爲在它們之前總是會包含一個標頭,_did_包含''。我見過很多,特別是在這個網站上。 – 2012-04-06 17:34:35

回答

3
  1. 頭文件應該編譯本身。即。用於測試製作一個只包含頭文件的.cpp文件。
  2. 頭文件應該由預處理器保護。如#ifndef等...

這兩個將確保順序無關緊要。它解決了

+0

這些對我來說似乎也是重要的事情。這聽起來像「每個頭一個CPP」的做法是多餘的,如果你已經遵循CPP最佳做法。 – Kai 2012-04-06 17:15:55

0

的一個問題是允許.h文件被LINTED(由我皮棉工具至少)。沒有.cpp做一個包含.h我的模板代碼會跳過。