我是如何学习C语言的
作者:罗上文,微信:Loken1,公众号:FFmpeg弦外之音
我第一次学习C语言是在Linux虚拟机里面,导致我有比较长的一段时间认为C语言只能在Linux上运行。但其实C语言是一款跨平台的语言,可以在Linux平台编译运行,也可以在Windows平台编译运行,等等。
C的开源项目,它能在绝大部分的主流平台上编译运行,只要这个开源项目的 Makefile 写得足够好。
C语言在早期其实也是混乱的,但后面经过不断地发展已经形成了标准库,标准库的函数在各个平台都是一样的。
不过在标准库之外,有些函数是操作系统提供的API接口,这些就有差异,例如Windows的多线程API 就与 Linux 的多线程API函数是不一样的。
成为一个C程序员的成长路径通常是这样的,第一步是看《C语言程序设计现代方法》熟悉基本语法;第二步开始学编译链接的内容,可以选择看《程序员的自我修养:链接、装载与库》;第三步是学习操作系统的API,因为Windows跟Linux的C接口API是有区别的;第四步是学习WinDbg或者GDB调试,可以选择看张银奎写的《软件调试》。
第二,第三,第四步,可以根据每个人的情况自行调整。有些人适合先学调试再学操作系统API。
因为《程序员的自我修养:链接、装载与库》一书比较厚,通读下来需要不少时间,所以我在这里精简出来一章编译与链接的基础知识,希望能让读者把这些知识立即应用到 FFmpeg 的开发里面。
本书不想只做一些简单的步骤教程,而是想让读者了解到 Clion,vs2019,qt creator 等等这些集成开发环境内部在做什么。而不仅仅是讲GUI界面上的功能布局,应该点哪个按钮,按哪个步骤来编译。
这种浮于表面的操作无法举一反三,相反掌握编译链接的原理性知识,可以让读者很轻松解决一些编译链接的问题,也可以从 FFmpeg 项目扩展到其他 C/C++ 开源项目。