《C和指针》第2章 基本概念

2.1 环境
在ANSI C的任何一种实现中,存在两种不同的环境。翻译环境(translation environment),源代码被转换为可执行的机器指令。执行环境(execution environment),它用于实际执行代码。标准明确说明,这两种环境不必位于同一台机器上。
2.1.1 翻译
翻译阶段由几个步骤组成,组成一个程序的每个(有可能是多个)源文件通过编译过程分别转换为目标代码(object code)。然后,各个目标文件由链接器(linker)捆绑在一起,形成一个单一而完整的可执行程序。链接器同时也会引入标准C函数库中任何被该程序所用到的函数,而且它也可以搜索程序员个人的程序库,将其中需要使用的函数也链接到程序中。图2.1描述了这个过程。
编译过程本身也是由级个阶段组成,首先是预处理器(preprocessor)处理。在这个阶段,预处理器在源代码上执行一些文本操作。例如,用实际值代替#define指令定义的符号以及读入由#include指令包含的文件的内容。
然后,源代码经过解析(parse),判断它的语句的意思。第2个阶段是产生绝大多数错误和警告信息的地方。随后,便产生目标代码。目标代码是机器指令的初步形式,用于实现程序的语句。如果我们在编译程序的命令行中加入了要求进行优化的选项,优化器(optimizer)就会对目标代码进一步进行处理,使它效率更高。优化过程需要额外的时间,所以在程序调试完毕并追被生成正式产品之前一般不进行这个过程。至于目标代码是直接产生的,还是先以汇编语言语句的形式存在,然后经过一个独立的阶段编译成目标文件,对我们来说并不重要。
在这里插入图片描述
一、文件名约定
尽管标准并没有制定晚间的取名规则,但大多数环境都存在你必须遵守的文件名命名约定。C源代码通常保存于以.c扩展名命名的文件中。由#include指令包含到C源代码的文件被称为头文件,通常具有扩展名.h。
二、编译和链接
Windows集成开发环境是一个完整的独立编程工具,它包括源代码编辑器、调试器和编译器。

2.2 词法规则
词法规则就像英语中的拼写规则,决定你在源程序中如何形成单独的字符片段,也就是标记(token)。
一个ANSI C程序由生命和函数组成。函数定义了需要执行的工作,而声明则描述了函数和(或)函数将要操作的数据类型(有时候是数据本身)。注释可以散布于原文件的各个地方。
2.2.1 字符
三字母词(trigrph)比如:??( ??)
转义序列(escape sequence)或字符转义(character escape):由一个反斜杠\加上一或多个其他字符组成。
? 在书写连续多个问号时使用,防止它们被解释为三字母词、
" 用于表示一个字符串常量内部的双引号。
’ 用于表示字符常量’。
\ 用于表示一个反斜杠,防止它被解释为一个转义序列符。
2.2.2 注释
2.2.3 自由形式的源代码
2.2.4 标识符
标识符(identifier)就是变量、函数、类型等的名字。它们由大小写字母、数字和下划线组成,但是不能以数字开头。
2.2.5 程序的形式

2.3 程序风格
2.4 总结
2.5 警告的总结
1.字符串常量中的字符被错误地解释为三字母。
2.编写得糟糕的注释可能会意外地中止语句。
3.注释的不适当结束。
2.6 编程提示的总结
良好的程序风格和文档将使程序更容易阅读和维护。

猜你喜欢

转载自blog.csdn.net/lanzijingshizi/article/details/83507915