• C++之头文件包含顺序


    • 使用标准的头文件包含顺序可增强可读性, 避免隐藏依赖。
    • Google C++ Style Guide》推荐顺序:(对xxx.cpp)
      • xxx.h
      • C 系统文件
      • C++ 系统文件
      • 其他库的 .h 文件
      • 本项目内 .h 文件
    • 《C++编程思想》推荐顺序:(对xxx.cpp)从最特殊到最一般。
      • xxx.h
      • 本项目内 .h 文件
      • 其他库的 .h 文件
      • C++ 系统文件
      • C 系统文件
    • 两者相同的地方是将xxx.h 放在开始,为啥?避免隐藏依赖!我们希望每一个头文件都可以独立编译。
       1 //A.h
       2 #pragma once
       3 
       4 class A
       5 {
       6 public:
       7     A(){};
       8     ~A(){};    
       9 private:
      10     std::vector<int> m_nArray;
      11 };
      12 
      13 //A.cpp
      14 #include "StdAfx.h"//预编译头文件
      15 #include <vector>
      16 #include "A.h"
    • 这两个文件可以通过编译,不过问题是,头文件A.h隐藏依赖头文件vector。调换一下二者顺序,则无法通过编译。还有就是,第三方想使用A.h的话,还要同时包含vector头文件,并且顺序不能错。这就是隐藏依赖带来的问题!
    • 要解决这个问题,先要发现它。方法就是按照标准头文件顺序,则无法通过编译,于是在A.h中添加#include <vector>
       1 //A.h
       2   #pragma once
       3   #include <vector>
       4   class A
       5   {
       6   public:
       7       A(){};
       8       ~A(){};    
       9   private:
      10       std::vector<int> m_nArray;
      11   };
      12   
      13   //A.cpp
      14   #include "StdAfx.h"//预编译头文件
      15   #include "A.h"
    •  两种头文件排序,个人还是倾向于google的办法。一个好处就是项目.h在最后,便于修改。;)

    • 参考《C++编程思想》、《Google C++ Style Guide》
  • 相关阅读:
    机器人搬重物(BFS)
    POJ1386Play on Words(欧拉回路)
    轰炸
    杂务(动态规划)
    Prism框架的Regions使用
    MVVM(使用Prism框架)开发WPF
    WPF显示数据库内容
    UI案例
    VS的快捷操作
    谷歌浏览器插件安装、VIP看视频、解除百度网盘限速
  • 原文地址:https://www.cnblogs.com/dahai/p/2827620.html
Copyright © 2020-2023  润新知