当前位置:首页 » 编程软件 » 预处理与预编译

预处理与预编译

发布时间: 2022-07-02 12:11:36

‘壹’ 什么是预编译,何时需要预编译:

预编译又称预处理,是作代码文本的替换工作,如文件包含#include、 宏定义、条件编译指令
预处理,更多的可以上网搜索一下。

‘贰’ 预处理命令和编译预处理是什么关系

所谓预处理是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动对源程序编译

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

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

‘肆’ 预编译的释义

预编译又称为预处理,是做些代码文本的替换工作。
处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等
就是为编译做的预备工作的阶段
主要处理#开始的预编译指令

‘伍’ 预处理是在编译之前完成的是什么意思 是在我按下编译按钮之前

呵呵,当然不是。
我来描述一下当你按下IDE,即集成开发环境中的编译按钮的时候,后台发生了什么,你就会明了。
我们所说的编译,比较笼统。严格或者说是原始意义上的编译是指将源代码翻译成机器二进制码。其实真正完成从源代码到机器码,要分为几个阶段的,具体情况要看是什么语言,还有编译器提供的扩展性特性。但是一般情况下都包含一下几个阶段;

首先,是预编译。这时候不是真正的编译,而是预处理,比如说进行宏展开。
接着就是编译。这是比较粗糙的说法,因为编译阶段也可以分为词法分析、语法分析、语言分析、中间代码产生、代码优化、产生机器码等阶段,这个是编译原理课程的内容。

所以当你按下编译按钮的时候,编译环境会进行预编译,然后才是真正的编译。

现代的图形界面集成开发环境的出现和流行,使得编译的过程往往被很多人所忽视。

any questions?

‘陆’ 什么是预编译 何时需要预编译 mfc面试

预编译又称为预处理,是做些代码文本的替换工作

预编译又称为预处理,是做些代码文本的替换工作

处理#开头的指令,比如拷贝#include包含的文件代码,#define宏定义的替换,条件编译等

就是为编译做的预备工作的阶段

主要处理#开始的预编译指令

预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。常见的预编译指令有:

(1)#include 指令

该指令指示编译器将xxx.xxx文件的全部内容插入此处。若用<>括起文件则在系统的INCLUDE目录中寻找文件,若用" "括起文件则在当前目录中寻找文件。一般来说,该文件是后缀名为"h"或"cpp"的头文件。

注意:<>不会在当前目录下搜索头文件,如果我们不用<>而用""把头文件名扩起,其意义为在先在当前目录下搜索头文件,再在系统默认目录下搜索。

(2)#define指令

该指令有三种用法:

第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;

第二种是定义常数,如#define max 100,则max代表100(这种情况下使用const定义常数更好,原因见注1);

第三种是定义"函数",如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数(这种方法存在一些弊病,见注2)。

第四种是定义"宏函数",如#define GEN_FUN(type) type max_##type(type a,type b){return a>b?a:b;} ,使用时,用GEN_FUN(int),则此处预编译后就变成了 max_int(int a,int b){return a>b?a:b;},以后就可以使用max_int(x,y)就可以得到x和y中较大的数.比第三种,增加了类型的说明。

(3)#if、#else和#endif指令

这些指令一般这样配合使用:

#if defined(标识) //如果定义了标识

要执行的指令

#else

要执行的指令

#endif

在头文件中为了避免重复调用(比如说两个头文件互相包含对方),常采用这样的结构:

#if !(defined XXX) //XXX为一个在你的程序中唯一的标识符,

//每个头文件的标识符都不应相同。

//起标识符的常见方法是若头文件名为"abc.h"

//则标识为"abc_h"

#define XXX

真正的内容,如函数声明之类

#endif

热点内容
测温一体机怎么配置 发布:2024-04-28 03:11:56 浏览:591
大生活迅雷下载ftp 发布:2024-04-28 03:11:09 浏览:510
python如何生成随机数 发布:2024-04-28 02:21:59 浏览:168
小雨游戏解说我的世界服务器 发布:2024-04-28 02:08:12 浏览:876
安卓怎么删除账户 发布:2024-04-28 02:06:50 浏览:828
内存解压缩 发布:2024-04-28 01:58:10 浏览:867
三星存储卡防伪 发布:2024-04-28 01:50:59 浏览:276
轻云服务器和云服务器的区别 发布:2024-04-28 01:50:32 浏览:552
xcode如何编译c语言 发布:2024-04-28 01:48:53 浏览:181
create存储过程 发布:2024-04-28 01:42:52 浏览:578