如何组织构建多文件 C 语言程序!Unix 程序和 Makefile 编程!

本文介绍了如何根据Unix程序哲学构建多文件C语言程序,讲解了流编码器/解码器概念,并详细阐述了Makefile在程序构建中的作用。通过一个名为“喵呜喵呜”的编码方案,作者演示了如何组织代码和构建过程,同时讨论了如何通过argv[0]和ln指令管理命令行工具。
摘要由CSDN通过智能技术生成

准备好你喜欢的饮料、编辑器和编译器,放一些音乐,然后开始构建一个由多个文件组成的 C 语言程序。

大家常说计算机编程的艺术部分是处理复杂性,部分是命名某些事物。此外,我认为“有时需要添加绘图”是在很大程度上是正确的。

在这篇文章里,我会编写一个小型 C 程序,命名一些东西,同时处理一些复杂性。

 

优秀 Unix 程序哲学

首先,你要知道这个 C 程序是一个 Unix 命令行工具。

这意味着它运行在(或者可被移植到)那些提供 Unix C 运行环境的操作系统中。当贝尔实验室发明 Unix 后,它从一开始便充满了设计哲学。

用我自己的话来说就是:程序只做一件事,并做好它,并且对文件进行一些操作。虽然“只做一件事,并做好它”是有意义的,但是“对文件进行一些操作”的部分似乎有点儿不合适。

事实证明,Unix 中抽象的 “文件” 非常强大。

一个 Unix 文件是以文件结束符(EOF)标志为结尾的字节流,仅此而已。

文件中任何其它结构均由应用程序所施加而非操作系统。

操作系统提供了系统调用,使得程序能够对文件执行一套标准的操作:打开、读取、写入、寻址和关闭(还有其他,但说起来那就复杂了)。

对于文件的标准化访问使得不同的程序共用相同的抽象,而且可以一同工作,即使它们是不同的人用不同语言编写的程序。

具有共享的文件接口使得构建可组合的的程序成为可能。

一个程序的输出可以作为另一个程序的输入。

Unix 家族的操作系统默认在执行程序时提供了三个文件:标准输入(stdin)标准输出(stdout)标准错误(stderr)

其中两个文件是只写的:stdout 和 stderr。而 stdin是只读的。当我们在常见的 Shell 比如 Bash 中使用文件重定向时,可以看到其效果。

$ ls | grep foo | sed -e 's/bar/baz/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值