2012-04-06 113 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我的模板代码会跳过。