专栏首页方亮Windows客户端C/C++编程规范“建议”——文件

Windows客户端C/C++编程规范“建议”——文件

7 文件

7.1 正确使用#include 

等级:【推荐】

说明:#include <>和#include “”导致编译器在搜索文件时,搜索的路径顺序不同。所以需要正确使用#include,以避免包含错了头文件。

语法形式

操作

带引号的形式

预处理器按以下顺序搜索包含文件: 在包含 #include 语句的文件所在的同一目录中。 在当前打开的包含文件的目录中,采用与打开它们的顺序相反的顺序。 搜索从父包含文件的目录中开始进行,然后继续向上到任何祖父包含文件的目录。 跟随每个 /I 编译器选项指定的路径。 跟随 INCLUDE 环境变量指定的路径。

尖括号形式

预处理器按以下顺序搜索包含文件: 跟随每个 /I 编译器选项指定的路径。 通过命令行进行编译时,跟随 INCLUDE 环境变量指定的路径。

  1. 在包含 #include 语句的文件所在的同一目录中。
  2. 在当前打开的包含文件的目录中,采用与打开它们的顺序相反的顺序。 搜索从父包含文件的目录中开始进行,然后继续向上到任何祖父包含文件的目录。
  3. 跟随每个 /I 编译器选项指定的路径。
  4. 跟随 INCLUDE 环境变量指定的路径。

尖括号形式 预处理器按以下顺序搜索包含文件:

  1. 跟随每个 /I 编译器选项指定的路径。
  2. 通过命令行进行编译时,跟随 INCLUDE 环境变量指定的路径。

7.2 重复引用头文件需控制

等级:【必须】 说明:不可避免的头文件引用存在交叉的场景,所以在定义头文件时,使用域控制等方法控制重复引用问题。         例子:

#pragma once
// 头文件实际内容

        或

#ifndef PATH_XXX_HEADER_H
#define PATH_XXX_HEADER_H
// 头文件实际内容
#endif

        对于使用#define方式确保头文件不会被重复包含,需要考虑定义的宏名称的唯一性。推荐使用“文件路径”+“_”+“文件名”的方式。比如trunk/core/src/filecheck.h的宏为TRUNK_CORE_SRC_FILECHECK_H。

7.3 头文件中不要定义全局变量

等级:【要求】 说明:减少代码膨胀。

7.4 头文件引用顺序

等级:【推荐】 说明:按如下顺序布局头文件:

  1. C(标准) 库
  2. C++(标准)库
  3. Boost库
  4. 其他库
  5. 自己Project头文件

7.5 减少头文件依赖

等级:【推荐】

说明:通过前置声明的方法替代include文件头的方式,可以减少头文件依赖。这对编译速度有提升。

(转载请指明出于breaksoftware的csdn博客)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何定制一款12306抢票浏览器——用户界面

            我不打算写个Windows界面。因为这个软件的全部就是个浏览器。我准备将”浏览器“进行到底,所以我选择使用html作为我们的用户界面。我也并不打...

    方亮
  • DllMain中不当操作导致死锁问题的分析--DisableThreadLibraryCalls对DllMain中死锁的影响

            《windows核心编程》作者在讨论DllMain执行序列化的时候,曾说过一个他的故事:他试图通过调用DisableThreadLibraryC...

    方亮
  • DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子2

            本文介绍使用Windbg去验证《DllMain中不当操作导致死锁问题的分析--导致DllMain中死锁的关键隐藏因子》中的结论,调试对象是文中刚...

    方亮
  • Google C++编程风格指南(一)之头文件的相关规范

    一个良好的编程规范和风格是一名程序猿成熟的标志。规范的编码可以减少代码冗余,降低出错概率,便于代码管理和代码交流等等,事实上,其作用远不止这些,我们要牢记编码规...

    Dabelv
  • 【C语言笔记】两个小知识

    C语言包含头文件时应该使用尖括号还是双引号?使用尖括号<>,编译器会到系统路径下查找头文件;而使用双引号“”,编译器首先在当前路径目录下查找头文件,如果没有找到...

    正念君
  • [C&C++]头文件包含问题

    原文链接:https://blog.csdn.net/humanking7/article/details/79299045

    祥知道
  • C/C++头文件的作用和用法

    示例代码编译运行环境:Windows 64bits+VS2017+Debug+Win32。

    Dabelv
  • 使用C语言中的头文件有什么技巧和注意事项吗?为什么不直接包含C文件呢?

    从事嵌入式开发多年,对于C语言使用的频率比较多,现在讲讲C语言在平时编程工作中经常出现的一些问题,就以楼主的题目为切入点分析归纳下,分享给正在使用或者学习C语言...

    程序员互动联盟
  • google C++编程风格指南之头文件的包含顺序

    (1)为了加强可读性和避免隐含依赖,应使用下面的顺序:C标准库、C++标准库、其它库的头文件、你自己工程的头文件。不过这里最先包含的是首选的头文件,即例如a.c...

    Dabelv
  • [新品发布]C语言函数库上线

    每个函数包含了函数的原型、参数介绍、返回值意义、所需头文件、功能及样例等部分,方便初学者查找学习。

    编程范 源代码公司

扫码关注云+社区

领取腾讯云代金券