将标题标题中的自定义标题放在更高的位置是否合理include?例如包括以下部分someclass.hpp:
#include "someclass.h"
#include "global.h"
#include <iostream>
#include <string>
Run Code Online (Sandbox Code Playgroud)
这是最佳做法吗?如果是,它的利润是多少?
#include "widget.h" 作为第一件事,这是相当普遍的做法widget.cpp.这样做是确保它widget.h是自包含的,即不会无意中依赖于其他头文件.
除此之外,我认为这基本上是个人偏好的问题.
原因是如果你忘记包含一个依赖的头someclass.h,那么无论实现文件包含它作为第一个头,将得到未定义或未声明类型的警告/错误,以及诸如此类的东西.如果首先包含其他标题,那么您可能会掩盖这一事实 - 假设包含的标题定义了所需的类型,函数等.示例:
my_type.h:
// Supressed include guards, etc
typedef float my_type;
Run Code Online (Sandbox Code Playgroud)
someclass.h:
// Supressed include guards, etc
class SomeClass {
public:
my_type value;
};
Run Code Online (Sandbox Code Playgroud)
someclass.cpp:
#include "my_type.h" // Contains definition for my_type.
#include "someclass.h" // Will compile because my_type is defined.
...
Run Code Online (Sandbox Code Playgroud)
这将编译好.但想象一下你想SomeClass在你的程序中使用它.如果在包含my_type.h之前没有包含someclass.h,则会收到编译错误,说明my_type未定义.例:
#include "someclass.h"
int main() {
SomeClass obj;
obj.value = 1.0;
}
Run Code Online (Sandbox Code Playgroud)