当前位置: 首页 > news >正文

c++ 头文件

目录

防止头文件重复包含

头文件的作用

如何让程序的多个 .cpp 文件之间共享全局变量(可能是 int、结构体、数组、指针、类对象)?

防止头文件重复包含

为什么要防止头问件重复包含?

 

 

 

当然一般也不会把变量定义放到头问件,那为什么还需要防止重复包含? 

 

 

头文件的作用

 头文件的主要作用与说明

 C++ 函数,函数分文件编写_c++构造函数不同文件-CSDN博客

 C++类和对象--封装,类分文件编写_实现一个类如何设置头文件封装-CSDN博客

杂记 define,typedef,static,extern,memset,ifndef,递归,逻辑与&&,整型提升,算术转换,栈区,高地址_ifndef &&-CSDN博客 

作用分类说明例子
1. 函数/类声明提供函数原型或类接口,让其他 .c/.cpp 文件知道如何使用它们int add(int, int);class Person { void say(); };
2. 类型定义定义结构体(struct)、枚举(enum)、typedefusing 等类型typedef unsigned int uint;struct Point { int x, y; };
3. 变量声明使用 extern 声明全局变量,使多个源文件共享该变量extern int g_count;
4. 宏定义定义常量或代码片段,提高代码可读性与维护性#define PI 3.14159#define MAX(a,b) ((a)>(b)?(a):(b))
5. 模板定义模板函数或类定义通常必须放在头文件中template<typename T> T max(T a, T b) { return a > b ? a : b; }
6. 内联函数提高性能,允许编译器将函数体展开到调用处inline int square(int x) { return x * x; }
7. 命名空间声明定义逻辑作用域,避免命名冲突namespace math { int add(int, int); }
8. 提高复用性多个源文件共享接口,避免重复编写声明#include "utils.h" 让多个文件重用工具函数接口
9. 分离接口与实现将接口和实现分离,提高模块化与可维护性.h 里写声明,.cpp 里写实现
10. 条件编译保护防止头文件被重复包含引起重复定义错误#ifndef HEADER_H ... #define HEADER_H ... #endif

第3条不好。一般不这样用

extern 声明全局变量虽然合法并常见,但确实存在一些“坏味道”,在现代 C++ 开发中不推荐广泛使用它。

如何让程序的多个 .cpp 文件之间共享全局变量(可能是 int、结构体、数组、指针、类对象)?

 

 

 

 

 

 

 

 

或者

static 局部变量:

  • 只在第一次进入函数时执行初始化

  • 之后不再初始化,而是保留之前的值

 

 

http://www.xdnf.cn/news/931393.html

相关文章:

  • iview组件库:当后台返回到的数据与使用官网组件指定的字段不匹配时,进行修改某个属性名再将response数据渲染到页面上的处理
  • 海思Hi3798MV310_V39_HMS DDR3_安卓9.0_外贸盒update升级包
  • ALOHA ACT算法与源码笔记
  • Keil进阶操作
  • 前沿探索:可视化助力设备运维实现跨越式发展
  • JAVA反序列化应用 : URLDNS案例
  • 前端获取接口数据流程
  • 二分答案-P1873 砍树
  • MySQL中的部分问题(2)
  • Spring整合Mybatis
  • WEB3全栈开发——面试专业技能点P3JavaScript / TypeScript
  • 数据库、数据仓库、数据中台、数据湖相关概念
  • MATLAB R2025a|Win中文|仿真建模|安装教程
  • uni-app学习笔记二十三--交互反馈showToast用法
  • Docker 安装 Ubuntu
  • day27-shell编程(自动化)
  • 附加模块--Qt Shader Tools功能及架构解析
  • typeof运算符 +unll和undefined的区别
  • AI书签管理工具开发全记录(十七):Sun-Panel书签同步实现
  • 【ArcGIS Pro微课1000例】0072:如何自动保存编辑内容及保存工程?
  • 68常用控件_QGroupBox的使用
  • C语言中的文件操作
  • Android写一个捕获全局异常的工具类
  • 【hive】函数集锦:窗口函数、列转行、日期函数
  • stm32-c8t6实现语音识别(LD3320)
  • 【Mac 从 0 到 1 保姆级配置教程 16】- Docker 快速安装配置、常用命令以及实际项目演示
  • 【SpringBoot+SpringCloud】Linux配置nacos踩坑大全
  • AI时代:学习永不嫌晚,语言多元共存
  • 思澈sdk-新建lcd
  • LeetCode--25.k个一组翻转链表