
随笔一
代码复用性强:通用性高的代码只需编写一次,便于其他程序调用时进行小幅度修改。 多人协作便利:软件开发通常涉及多人团队,模块化让每人专注于特定部分,提高效率。 维护和修改更高效:问题定位时只需修改特定模块,无需影响整体代码。
发布日期:2021-05-07 11:08:50
浏览次数:21
分类:精选文章
本文共 848 字,大约阅读时间需要 2 分钟。
为什么需要使用多文件编程
模块化编程的优势
多源文件的访问方式
编译过程分为预处理、编译、汇编和链接四个阶段:
- 预处理:去注释、宏替换、条件编译和头文件包含。
- 编译:检查语法错误,生成汇编代码。
- 汇编:将汇编代码转换为机器可执行的二进制代码。
- 链接:将不同模块的代码整合,建立函数和变量的连接关系,生成可执行文件。
不同模块的联系主要发生在链接阶段,通过头文件声明找到对应函数,缺少定义会导致链接错误。函数或变量的声明与定义需要唯一性,避免重复定义。
extern的作用
extern用于声明一个文件中的全局变量或函数,告诉编译器在另一个文件中查找对应变量或函数。链接阶段会去目标文件中寻找对应的变量或函数。
为什么头文件不能定义全局变量
头文件可能被多个源文件包含,导致全局变量重复定义,影响链接。因此,头文件应仅包含变量或函数的声明,而非定义,避免重定义问题。
#ifndef与#pragma once的区别
两种方式都用于防止头文件重复包含:
- #ifndef:依赖宏定义,由语言支持,适用于所有编译器,但需管理宏名字,避免冲突。
- #pragma once:由编译器处理,确保同一物理文件不被重复包含,适合新编译器支持,但在文件拷贝时可能无法防止重复。
两者的优缺点对比
- #ifndef:可移植性好,效率较低,需管理宏定义,可能引发名字冲突。
- #pragma once:效率高,依赖编译器支持,适合新编译器,但在文件拷贝时无法防止重复。
如何避免重复包含
使用以下方式:
- #ifndef:结合文件名宏判断是否包含。
- #pragma once:让编译器管理文件唯一性,但需注意文件拷贝问题。
通过选择合适的方式,实现高效且安全的多文件编程,确保开发流程的清晰和可维护性。
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2025年04月03日 15时43分35秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
centos7防火墙导致nginx无法访问
2019-03-05
python绘制一份完美的中国地图
2019-03-05
Python 超级简单精准计算地点日出日落时间
2019-03-05
准确率94%!Python 机器学习识别微博或推特机器人
2019-03-05
Python 元组Tuple 相对于数组List的优势
2019-03-05
Android OTA升级
2019-03-05
Android基本知识
2019-03-05
在Java中,return null 是否安全, 为什么?
2019-03-05
命令模式【Command Pattern】
2019-03-05
如何将自己写的代码编进系统
2019-03-05
数据结构有哪些
2019-03-05
OSI 7 层网络模型
2019-03-05
Spring Bean 生命周期
2019-03-05
JDK 内置线程池
2019-03-05
JVM 参数默认值查询
2019-03-05
异常的继承结构
2019-03-05
SVN 和 Git 区别
2019-03-05
JDK 内置的多线程协作工具类的使用场景
2019-03-05
redis 单线程为什么快
2019-03-05
Java 源代码到运行的过程
2019-03-05