C/C++ 源代码中系统头文件和用户头文件之间的正确顺序是什么?
what's the right order between system header and user header file in C/C++ source?
以下示例之间的正确顺序是什么:
A、系统头继续
#include <stdio.h>
#include "user-define.h"
B,用户头继续
#include "user-define.h"
#include <stdio.h>
关于头文件,我只记得使用第一种方法。
对于源文件,除非有与源文件对应的头文件,否则我使用相同的方法。在这种情况下,我首先 #include
特定的头文件。
假设我有 A.h
声明了 class 或一些函数并且 A.cc
实现了它们。在那种情况下,我使用:
A.c:
#include "A.h"
// Standard includes
// User includes
这有助于清除任何缺少的前向声明或标准包含文件,这些文件是使 A.h
成为可重用头文件所必需的,而不必担心必须 #include
d 才能在其他源文件中使用 #include "A.h"
。
正确编写的用户 headers 应该包括他们需要的任何 headers,因为 header 的用户不必知道哪些 headers 需要预先包括在内。这是遵循封装的原则。
出于同样的原因,应该保护正确编写的用户 headers 免受多重包含。想象一下,主程序包括A和B,A包括C,那么应该可以修改B,使其也包括C,而无需更改任何其他文件。
有了正确编写的用户 header,包含的顺序并不重要。这纯粹是一个偏好问题。我个人喜欢将系统 header 放在第一位,将库 header 放在第二位,将用户 header 放在第三位,但您可以随心所欲。
以下示例之间的正确顺序是什么:
A、系统头继续
#include <stdio.h>
#include "user-define.h"
B,用户头继续
#include "user-define.h"
#include <stdio.h>
关于头文件,我只记得使用第一种方法。
对于源文件,除非有与源文件对应的头文件,否则我使用相同的方法。在这种情况下,我首先 #include
特定的头文件。
假设我有 A.h
声明了 class 或一些函数并且 A.cc
实现了它们。在那种情况下,我使用:
A.c:
#include "A.h"
// Standard includes
// User includes
这有助于清除任何缺少的前向声明或标准包含文件,这些文件是使 A.h
成为可重用头文件所必需的,而不必担心必须 #include
d 才能在其他源文件中使用 #include "A.h"
。
正确编写的用户 headers 应该包括他们需要的任何 headers,因为 header 的用户不必知道哪些 headers 需要预先包括在内。这是遵循封装的原则。
出于同样的原因,应该保护正确编写的用户 headers 免受多重包含。想象一下,主程序包括A和B,A包括C,那么应该可以修改B,使其也包括C,而无需更改任何其他文件。
有了正确编写的用户 header,包含的顺序并不重要。这纯粹是一个偏好问题。我个人喜欢将系统 header 放在第一位,将库 header 放在第二位,将用户 header 放在第三位,但您可以随心所欲。