导航:首页 > 源码编译 > 字符串编译预处理

字符串编译预处理

发布时间:2025-05-02 01:08:59

‘壹’ c语言编译预处理

编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。

如果用一张图来表示:

读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理

[析] 伪指令主要包括以下四个方面

(1)宏定义指令,如#define Name TokenString,#undef等。对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的'出现不再被替换。

(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉

(3)头文件包含指令,如#include "FileName"或者#include 等。在头文件中一般用伪指令#define定义了大量的宏(最常见的是字符常量),同时包含有各种外部符号的声明。采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。

包含到c源程序中的头文件可以是系统提供的,这些头文件一般被放在/usr/include目录下。在程序中#include它们要使用尖括号(<>)。另外开发人员也可以定义自己的头文件,这些文件一般与c源程序放在同一目录下,此时在#include中要用双引号("")。

(4)特殊符号,预编译程序可以识别一些特殊的符号。例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。

注意:

预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。

‘贰’ C语言中 “编译时处理” 与 “预处理” 两个概念的区别

浩强哥的教材中说的很清楚,可以参考。简单来说,C语言程序在编译前,其实是有一个预备工作的,这个就是“预处理”,可以理解为:人类所编写的程序,需要转化为机器能够编译的合理输入文件。机器编译,就是按照语法来处理语句,一些语句或者逻辑是在编译时才有意义,才进行分析,这就是“编译时处理”。

‘叁’ 预处理指令有什么作用

对相关命令或语句的含义和功能作具体分析。

阅读全文

与字符串编译预处理相关的资料

热点内容
linux判断是否为文件 浏览:937
手机处理器编译器 浏览:704
ug曲线点倒角编程 浏览:928
当算法把人驯服 浏览:710
字母r编程 浏览:576
编译openwrt添加型号 浏览:275
快眼看app哪里下载 浏览:11
手机上门禁卡加密怎么处理 浏览:857
2019年税务师教材pdf 浏览:503
android支付宝源码 浏览:942
建造师加密锁怎么办 浏览:301
邮箱在线文档怎么设文件夹 浏览:876
区块链编译eth 浏览:784
安卓手机软件如何给照片加发光点 浏览:979
结构性存款在app哪里 浏览:970
iphone如何快速打开app 浏览:800
好玩的程序员笑话 浏览:82
linux下如何搭建web服务器 浏览:222
狼群之饥和命令之眼 浏览:369
xp使用telnet命令 浏览:159