编程机制
编写程序时必须遵循的确切步骤很大程度上取决于您的计算机环境。 由于 C 语言是可移植的,因此它可以在许多环境中使用,包括 UNIX、Linux 等。
然而,让我们首先看看许多环境中共有的一些方面。 您不必知道运行 C 程序的幕后发生了什么,但一点点知识就是一个很好的背景。 它还可以帮助您理解为什么编写 C 程序需要某些步骤。
当您用 C 语言编写程序时,您会将编写的内容保存在称为源代码文件的文本文件中。 大多数系统要求文件名以 .c 结尾。
例如,你好世界.c。 名称中点之前的部分称为基本名称,点之后的部分称为扩展名。 因此,hello world 是基本名称,c 是扩展名。 Hello world.c 组合起来就是文件名。
这样,当我们提到名称时,内容可以更具体,我们假设有一个名为 .c 的源文件,其源代码如下所示。
-------------------------------------------------- ----
#
int main()
(“你好世界! ”);
0;
-------------------------------------------------- ----
目标代码文件、可执行文件和库
C 编程的基本策略是用程序将源代码文件转换为包含可以运行的机器语言代码的可执行文件。
它分两步完成:编译和链接。 编译器将源代码转换为中间代码,链接器将此中间代码与其他代码组合以生成可执行文件。
C采用这种分为两部分的方法来方便程序的模块化。 您可以单独编译每个模块,然后使用链接器组合编译后的模块。 这样,如果您需要更改一个模块,则不必重新编译所有其他模块。 同时,链接器将您的程序与预编译的库代码结合起来。
中间文件的形式有多种选择。 最通用的选项(也是我们在此描述的实现中使用的选项)是将源代码转换为机器语言代码并将结果放入目标代码文件中。 尽管目标文件包含机器语言代码,但该文件尚无法运行。 目标文件包含源代码的转换结果,但它不是一个完整的程序。
目标代码文件中第一个缺失的元素是启动代码,它充当程序和操作系统之间的接口。
例如,您可以在 DOS 或 Linux 下运行兼容的 IBM PC。 在这两种情况下,硬件将是相同的,因此将使用相同的目标代码,但对于 DOS 和 Linux 将使用不同的启动代码,因为这两个系统处理程序的方式不同。
第二个缺失的元素是库例程的代码。 几乎所有 C 程序都使用标准 C 库中包含的例程(称为函数)。 例如前面的.c使用的是()。 目标代码文件不包含该函数的代码,它只包含声明()函数使用的指令。 实际代码存储在另一个称为“库”的文件中。 库文件包含许多函数的目标代码。
链接器的作用是将【目标代码】、【系统标准启动代码】和【库代码】这三个要素组合在一起,存储在一个文件中,即可执行文件。 对于库代码,链接器仅从库中提取您使用的函数所需的代码,如下面的简单示例所示:
简而言之,目标文件和可执行文件都是由机器语言指令组成的。 但是目标文件仅包含您编写的代码被翻译成的机器语言,而可执行文件还包含您使用的库例程以及启动该代码的机器代码。
系统集成开发环境
由于 C 编译器不是标准包的一部分,因此您需要获取并安装一个。 许多供应商提供基于 .
所有编译器都具有用于汇编 C 程序的快速集成开发环境。 关键是它们都有内置的编辑器用于编写C程序。 此类开发环境通常提供允许您命名和保存源代码文件的菜单,以及允许您在不离开 IDE 的情况下编译和运行程序的菜单。
如果编译器发现任何错误,就会返回给编辑器,编辑器可以突出显示有问题的行,并将其与相应的错误信息进行匹配,例如VC6.0、QT,(简称vs)。
IDE 起初可能有点令人生畏,因为它们提供多个目标,即程序可以运行的多个环境。
例如,他们可能提供16位程序、32位程序、动态链接库文件(DLL)等供您选择。 许多目标需要引入图形界面支持。
要管理这些选项,您通常会创建一个项目,然后向其中添加将使用的源代码文件名。 通常,首先使用“文件”菜单创建一个新项目。 重要的是选择正确的项目格式。 本书中的示例是一般示例,旨在在简单的命令行环境中运行。
由于 IDE 通常处理 C 和 C++,因此您应该指定您需要 C 程序。 在某些产品中,您可以使用项目类型来指示您要使用 C。在其他产品(例如 C++)中,您可以使用 .c 文件扩展名来指示您要使用 C 而不是 C++。 但是,大多数 C 程序也可以作为 C++ 程序运行。
也许你写完程序后会遇到一个问题:程序终止时显示程序执行情况的窗口突然消失了,即程序运行完后窗口一闪而过。 如果遇到这种情况,可以暂停程序,直到按下回车键。 为此,请在程序末尾、语句之前添加以下行:
();
这一行读取一次按键,因此程序会暂停,直到按下 Enter 键。 有时,根据程序功能的需要,可能已经有等待按键的指令。 在这种情况下,您需要使用 () 两次:
();
();
例如,如果程序执行的最后一件事是要求您输入体重,则您应该输入您的体重并按 Enter 键输入数据。 程序将读取重量,第一个()将读取回车键,第二个()将导致程序暂停,直到再次按下回车键。 如果您现在不明白这一点,在了解更多关于 C 输入后您就会明白。
虽然 IDE 之间有许多共同原则,但具体细节因产品而异,并且在产品系列中因版本而异。 您必须经过一些练习才能了解使用编译器的正确方法。
语言标准
目前,有许多可用的 C 实现。 理想情况下,当您编写 C 程序时,如果该程序不使用特定于机器的编程技能,则它应该在任何实现中都以相同的方式运行。 为了在实践中做到这一点,不同的实现需要遵守公认的标准。
首先说明一下,C语言没有官方标准。 然而,Brian 编写的 The C 第一版(1978 年)成为公认的标准,通常称为 K&R C 或 C。
特别是本书附录中的“C”已经成为C实现的指南。 例如,编译器将声明它提供了完整的 K&R 实现。 然而,虽然这个附录定义了C语言,但它没有定义C库。
由于 C 语言比大多数其他语言更依赖于库,因此还需要一个库标准。 在没有任何官方标准的情况下,提供 UNIX 实现的库成为事实上的标准。
第一个 ANSI/ISO C 标准
随着 C 语言的发展并在更广泛的系统上得到更广泛的使用,C 社区意识到它需要一个更全面、新颖和严格的标准。 为了满足这一要求,美国国家标准协会(ANSI)于1983年成立了一个委员会来制定新标准,并于1989年正式采用。
这个新标准 (ANSI C) 定义了语言和标准 C 库。 国家标准化组织于 1990 年采用了 C 标准(ISO C)。ISO C 和 ANSI C 本质上是相同的标准。
ANSI/ISO 标准的最终版本通常称为 C89(因为 ANSI 于 1989 年批准了该标准)或 C90(因为 ISO 于 1990 年批准了该标准)。 然而,由于 ANSI 版本先出现,所以人们通常使用术语 ANSI C。
C99标准
1994年,开始了标准的修订工作,这一努力的成果就是C99标准。 ANSI/ISO 联合委员会认可了 C90 标准的原始原则,包括保持文字简短。
他们的目的不是为语言添加新功能,而是为了满足新目标。 新目标之一是支持国际编程,例如提供处理国际字符集的方法。 第二个目标是“组织现有公约以解决明显的缺陷”。
因此,当面临将C移植到64位处理器的需要时,委员会根据现实生活中处理过该问题的人的经验添加了标准。 第三个目标是提高C对科学和工程项目中关键数值计算的适应性。
国际化、纠正其缺点和提高计算的实用性是变革的主要目标。 所形成的变更计划本质上更加保守,例如将与 C90 和 C++ 的不兼容性保持在最低限度并保持语言概念上的简单。 肩带的全部意义在于希望 C++ 成为一门重要而强大的语言。
结果是 C99 修改保留了 C 的基本特征,它仍然是一种简短、清晰且高效的语言。 本书指出了C99中的许多变化。 由于大多数当前编译器并未完全实现所有 C99 修改,因此您可能会发现某些修改在您的系统上不可用。 或者您可能会发现修改编译器设置后只能看到一些 C99 功能。
总结
C 是一种功能强大、简洁的编程语言。 它之所以受欢迎,是因为它提供了有用的编程工具和对硬件的良好控制,并且因为 C 程序比大多数程序更容易从一个系统移植到另一个系统。 C是一种编译语言。 C编译器和链接器是将C语言源代码转换为可执行代码的程序。
用 C 语言编程可能是费力、困难和令人沮丧的,但这项工作也可以让你着迷、兴奋和满足。
看完之后是不是有很多感悟呢?
如果你真的想学习编程,小编推荐我主页上的C语言/C++编程学习基地【点击进入】!
我们都是正在学习编程的朋友。 入门很容易。 让我们一起学习,一起努力吧~
还有很多学习资料和视频,相信你会喜欢的!
涉及:游戏开发、常用软件开发、编程基础、课程设计、黑客等...