c++ 头文件

目录

防止头文件重复包含

头文件的作用

[如何让程序的多个 .cpp 文件之间共享全局变量(可能是 int、结构体、数组、指针、类对象)?](#如何让程序的多个 .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 局部变量:

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

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

相关推荐
啃火龙果的兔子3 分钟前
快速搭建Java服务指南
java·开发语言
未来之窗软件服务5 分钟前
智慧收银系统开发进销存库存统计,便利店、水果店、建材与家居行业的库存汇总管理—仙盟创梦IDE
java·开发语言·ide·进销存·仙盟创梦ide·东方仙盟·收银台
pusue_the_sun14 分钟前
从零开始搞定类和对象(上)
开发语言·c++
归云鹤27 分钟前
QT信号和槽怎么传输自己定义的数据结构
开发语言·数据结构·qt
ytttr87341 分钟前
MATLAB 实现 SRCNN 图像超分辨率重建
开发语言·matlab·超分辨率重建
饭碗的彼岸one1 小时前
重生之我在10天内卷赢C++ - DAY 1
linux·开发语言·c++·经验分享·笔记·学习方法
项目申报小狂人1 小时前
2025年1中科院1区顶刊SCI-投影迭代优化算法Projection Iterative Methods-附完整Matlab免费代码
开发语言·算法·matlab
java叶新东老师1 小时前
Makefile if语句用法
c++·makefile
weixin_437499922 小时前
【PHP属性详解:从基础到只读的完全指南】
开发语言·php
枫叶落雨2222 小时前
Hutool 的 WordTree(敏感词检测)
java·开发语言