【问题标题】:what's the right order between system header and user header file in C/C++ source? [duplicate]C/C++ 源代码中系统头文件和用户头文件之间的正确顺序是什么? [复制]
【发布时间】:2015-12-23 08:23:23
【问题描述】:

以下示例之间的正确顺序是什么:

A,系统头继续

    #include <stdio.h>
    #include "user-define.h"

B,用户标题继续

    #include "user-define.h"
    #include <stdio.h>

【问题讨论】:

  • 说“我是约翰·史密斯”和“很高兴认识你”的正确顺序是什么?
  • 见仁见智。我更喜欢第二个版本,因为它不会隐藏丢失的#includes。
  • @immibis 正确的方式是先说“我是约翰·史密斯”,然后说“很高兴认识你”。

标签: c header


【解决方案1】:

正确编写的用户标头应该包含他们需要的任何标头,因为标头的用户不必事先知道需要包含哪些标头。这是遵循封装原则的。

出于同样的原因,应保护正确编写的用户标头免受多次包含。假设主程序包含 A 和 B,并且 A 包含 C,那么应该可以修改 B,使其也包含 C,而无需更改任何其他文件。

使用正确编写的用户标头,包含的顺序无关紧要。这纯粹是一个偏好问题。我个人喜欢把系统头文件放在第一位,库头文件放在第二位,用户头文件放在第三位,但你可以做你想做的事。

【讨论】:

    【解决方案2】:

    说到头文件,我只记得第一种方法。

    当涉及到源文件时,我使用相同的方法,除非有与源文件对应的头文件。在这种情况下,我先#include特定的头文件。

    假设我有 A.h 声明了一个类或一些函数,而 A.cc 实现了它们。在这种情况下,我使用:

    交流:

    #include "A.h"
    
    // Standard includes
    
    // User includes
    

    这对于清除任何缺失的前向声明或标准包含文件很有用,这些文件是使A.h 成为可重用头文件所必需的,而无需担心#included 还必须是什么才能在其他情况下使用#include "A.h"源文件。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-02-09
      • 1970-01-01
      • 2011-02-05
      • 1970-01-01
      • 2011-01-31
      • 1970-01-01
      • 2012-06-04
      • 1970-01-01
      相关资源
      最近更新 更多