该博文为原创文章,未经博主同意不得转载,如同意转载请注明博文出处
本文章博客地址:https://cplusplus.blog.csdn.net/article/details/104990815

头文件引入

  • 前言
    • 细节外露
    • 编写代码要时刻谨记以下两个原则,才能从意识上杜绝这类情况。

前言

C++从C继承的基于头文件的类型检查,特别容易出问题,估计每个人都会遇到典型的循环引用的问题。而我最近在几个项目中遇到不少头文件引入不规范的情况,给使用造成了很大的麻烦。最主要的只有一种:就是不管青红皂白,都将依赖的头文件放在.h里include,造成的主要问题就是细节外露。

细节外露

假设有一个TestLibrary的库,.h和.cpp文件如下。可以看到该库实现使用了boost库,所以在.h文件显式引入了相应的头文件,但实际上头文件中TestLibrary的声明完全不依赖boost库,只有.cpp中才用到了boost库。

C++头文件引入的一种小问题相关推荐

  1. C语言头文件深入理解

    C语言程序中,源文件通常分为两种:一种用于保存程序的声明(declaration),称为头文件:另一种用于保存程序的实现(implementation),称为定义(definition)文件. C程序 ...

  2. C++ 头文件使用规范建议

    1.背景 拥有良好的编程规范和风格是一名程序员成熟的标志.规范的编码可以减少代码冗余,降低出错率,便于代码管理和代码交流等,事实上,其作用远不止这些,我们要牢记编码规范在心中啊. C++ 具有很多强大 ...

  3. 头文件防卫式声明/引用/static/extern/

    文章目录 1.头文件防卫式声明 2.引用 2.1 引用的本质 2.2 引用与指针的区别(特别的const指针?) 2.3引用传递和引用返回 3.static 3.1 静态局部变量 3.2 全局变量 3 ...

  4. 头文件和源文件的拼接

    头文件引入 如果有几万个人分工合作,如何将每个人的各类文件拼接起来呢? 知识扩展* :C语言后缀名的源文件不能用C++语法 已知:如果在一个源文件内调用另一个源文件的函数,如果没经过声明,是不能调用的 ...

  5. Qt模块头文件出现下划线问题

    头文件出现下划线问题,是因为pro文件中没有添加库如pro中没有添加此语句中的multimedia库,QT+=coreguimultimedia,#include<QMediaPlaylist& ...

  6. 【C++学习笔记】头文件详解

    个人整理学习用,非教材,有错误欢迎指正 头文件   究竟什么是头文件?   首先说明一个概念,所谓的文件后缀并不是必须的,在Linux下这种特点尤为明显.对于编译器来说,无论是.c文件 .cpp文件, ...

  7. Linux下gcc编译中关于头文件与库文件搜索路径相关问题

    如何指定GCC的默认头文件路径 网上偶搜得之,以之为宝:) 原地址:http://blog.chinaunix.net/u/28781/showart.php?id=401631 ========== ...

  8. 【Android 安装包优化】使用 lib7zr.so 动态库处理压缩文件 ( 拷贝 lib7zr.so 动态库头文件到 Android 工程中 | 配置 CMakeLists.txt 构建脚本 )

    文章目录 一.拷贝 p7zip 源码中的头文件到 Android Studio 项目中 二.配置 CMakeLists.txt 构建脚本 1.导入动态库 2.导入头文件 三.完整 CMakeLists ...

  9. 【Android FFMPEG 开发】Android Studio 工程配置 FFMPEG ( 动态库打包 | 头文件与函数库拷贝 | CMake 脚本配置 )

    文章目录 I . FFMPEG 交叉编译后的函数库及头文件 II . FFMPEG 静态库打包动态库 ( 仅做参考 ) III . 创建 Android Studio 工程 IV . FFMPEG 头 ...

最新文章

  1. python基本概念关系图_Python基本概念
  2. [老老实实学WCF] 第二篇 配置WCF
  3. JavaGUI中的JComboBox的处理
  4. 交付量强劲增长 特斯拉营收却将出现7年来首次下滑
  5. java深入学习2多线程(面试必备)
  6. 个人信用报告“数字解读”与妙用
  7. Android SharedPreferences的简单使用
  8. ASP.NET中进行消息处理(MSMQ) 一 (转)
  9. UltraEdit 注册机使用激活方法
  10. 【Python】断言(assert)
  11. iPhone12打开webview闪退或者白屏
  12. mfs java_mfs权威指南
  13. 你学不好英语,可能是精神内耗太多了
  14. CSIRO Detects Raw Materials Used in the Ma IoT PLC accessking of the First Stars
  15. android心跳包作用,Android开发Im总结-5:心跳包
  16. 美科学家试解“姆潘巴现象”
  17. 【USACO Open11】forgot
  18. mvn将本地jar文件导入本地maven库中
  19. 关于计算机的名言英语作文,适用于英语作文的名人名言
  20. 性能工具之Taurus使用(入门篇)

热门文章

  1. mysql 5.6压缩安装_MySQL 5.6 for Windows 解压缩版配置安装
  2. c语言 误差小于10 -6,上海理工大学C语言2011期中试题和答案
  3. socket python 收 发 队列 线程_对于Python中socket.listen()与多线程结合的困惑?
  4. Pycharm中的Debug工具以及简单的使用方法
  5. VTK:BackgroundTexture背景纹理用法实战
  6. boost::tokenizer模块相关的测试程序
  7. boost::sort模块实现spreadsort 字符串函子排序示例
  8. boost::qvm::deduce_scalar相关的测试程序
  9. boost::math::barycentric_rational相关用法的测试程序
  10. boost::iterator_archetypes用法的测试程序