C++扫盲——为什么C/C++分文件要写h和cpp?

看到了一个很有意思的视频,虽然探讨的是很基础的知识,但往往被忽略了。初学时理解不到位,现在重读有了新的理解,核心内容是关于C/C++的编译过程,分享给大家。

C/C++可以把想给别人看的部分放到头文件,而具体实现放到cpp里减少对编码的干扰。在代码复用时只需要引入头文件,在方便的同时隐藏实现细节。

gcc编译过程包括预处理、编译、汇编、链接,实现了从源文件(.c .cpp .h)到可执行程序(.exe)的转换。

生成可执行程序过程为成四个步骤:

1、由.c文件到.i文件,这个过程叫预处理。

2、由.i文件到.s文件,这个过程叫编译。

3、由.s文件到.o文件,这个过程叫汇编。

4、由.o文件到可执行文件,这个过程叫链接。

视频:

https://www.bilibili.com/video/BV1Hv4y1e7DC/?spm_id_from=333.337.search-card.all.click&vd_source=282fa529b606b758ba91e3316847f214

文本内容见:

https://zhuanlan.zhihu.com/p/111500914

相关推荐
凡人叶枫1 小时前
Effective C++ 条款04:确定对象被使用前已先被初始化
java·linux·开发语言·c++·嵌入式开发
不想写代码的星星1 小时前
std::move 根本不移动,就像老婆饼里没有老婆
c++
redaijufeng1 小时前
C++雾中风景7:闭包
c++·算法·风景
努力攻坚操作系统1 小时前
编程语言编译运行机制对比:C / Java / Python
java·c语言·python
小欣加油2 小时前
leetcode287寻找重复数
数据结构·c++·算法·leetcode
学会去珍惜2 小时前
C语言简介
c语言·开发语言
思麟呀2 小时前
C++11 核心特性(三):强类型枚举、static_assert 与 std::tuple
开发语言·c++
一拳一个呆瓜2 小时前
【STL】C++程序的启动与终止
c++·stl
凡人叶枫2 小时前
Effective C++ 条款07:为多态基类声明 virtual 析构函数
linux·c语言·开发语言·c++
凡人叶枫3 小时前
Effective C++ 条款10:令 operator= 返回一个 reference to *this
java·linux·服务器·开发语言·c++·effective c++