C语言如何翻译一个语句

C预处理器在程序执行之前查看程序(故称之为预处理器)。
根据程序中的预处理器指令,预处理器把符号缩写替换成其表示的内容。预处理器可 以包含程序所需的其他文件,可以选择让编译器查看哪些代码。预处理器并不知道 C。
基本上它的工作是把一些文本转换成另外一些文本。这样描述预处理器无法体现它的真正效用和价值,我们将在本章举例说明。

在预处理之前,编译器必须对该程序进行一些翻译处理。
首先,编译器 把源代码中出现的字符映射到源字符集。该过程处理多字节字符和三字符序列——字符扩展让C更加国际化

第二,编译器定位每个反斜杠后面跟着换行符的实例,并删除它们。也 就是说,

把下面两个物理行(physical line):
printf("That's wond\
erful!\n");
转换成一个逻辑行(logical line):
printf("That's wonderful\n!");

注意,在这种场合中,“换行符”的意思是通过按下Enter键在源代码文件 中换行所生成的字符,而不是指符号表征\n。
由于预处理表达式的长度必须是一个逻辑行,所以这一步为预处理器做 好了准备工作。一个逻辑行可以是多个物理行。
第三,编译器把文本划分成预处理记号序列、空白序列和注释序列(记号是由空格、制表符或换行符分隔的项)。这里要注意的是, 编译器将用一个空格字符替换每一条注释。因此,下面的代码:

int/* 这看起来并不像一个空格*/fox;
将变成:
int fox;

而且,实现可以用一个空格替换所有的空白字符序列(不包括换行符)。最后,程序已经准备好进入预处理阶段,预处理器查找一行中以#号 开始的预处理指令。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章