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

编译原理预处理

发布时间: 2022-05-17 20:56:35

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

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

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

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

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

any questions?

❷ 什么叫编译器预处理

在正式编译前的处理。比如
#define a 100
那么在编译器把代码编译成机器码之前,他会把所有a出现的地方变成100,在进行编译。

❸ 编译原理实验 编写一个对C语言的源程序预处理程序。

注释行对程序运行没有任何关系

❹ 编译原理 怎么编写C++程序去掉多余的空格,换行,跳格(编译原理 词法分析预处理)

你的程序里已经有了相应的功能(即过滤多余换行、空格、跳格tab等):

if(ch==10){ // ch=10表明读入的是换行
fin.get(ch); // 继续读,覆盖刚才读入的字符,完成过滤功能,下同
while(ch==32 || ch==9 || ch==13) { // ch=32表明是空格,ch=9是tab, ch=13是回车
fin.get(ch);
}

❺ C/C++ 的预编译原理是什么为什么要用预编译

为了防止程序在实际应用当中出现错误

❻ 编译原理中预处理子程序的主要功能

你好预处理的主要功能有
对宏定义的展开
对各种define和parameter的展开
对include文件的读取
删除注释和不需要的代码

❼ 从预处理、编译、汇编到链接,编译系统都作了哪些工作使用哪些工具生成了哪些文件

这个问题可烦可简,可深可浅。
对于编译执行语言而言:
我所知的笼统过程有
(1)源代码==》目标代码==》可执行程序
(资源==》目标代码)

(2)源代码==》中间代码==》目标代码==》可执行程序
第(1)种一般的为低级汇编采用的模式,第一个主要步骤统称为Assembly(汇编),由“汇编程序”(或称汇编编译器)完成,其包含预处理操作,生成的主要文件是目标文件,当然在生成目的文件前还有许多辅助文件,一般会被“汇编程序”临时生成,用完即删除,不指定控制选项的话最终用户是看不到这些文件的,有哪些中间临时文件,用处是什么可以查看“汇编编译器”的帮助选项得到。第二个主要步骤就是link(链接),其将目标代码文件,链接库里的目标代码块整合为可执行代码,中间也临时生成一些中间文件,如映射文件等,同样可通过链接器的选项查看。
当然,在一些高级汇编里还会有资源编译器,其将各种资源转为(编译为)目标文件(作为链接器的输入)
第(2)种一般是高级语言采用的模式,但有些比较高级的直接跳过中间代码由源代码生成目标代码,其就跟(1)类似,只是此时第一个主要步骤不叫“汇编”而称compile(编译),低级汇编的步骤一“汇编”也可称”编译“。如果有中间代码生成,这中间代码就是汇编代码,此后续处理就同(1)了,此时的中间代码其实也就是临时文件中的一种。

概述:源代码到目标代码的过程通常称为编译,而目标代码到可执行程序的过程称问链接。
或将两个过程统称为代码的编译(全称应为编译连接),这涉及具体的语境,事实上编译器如VC的cl.exe若没有指定/c(只生产目标代码选项),其就是编译连接的统一过程(cl会调用相应的链接器),若指定,则只有编译过程(只生成目标代码而不链接称可执行程序)

上述编译执行类语言开发平台所开发生成的程序一般称为”非托管类程序“
而对于托管类程序(如.NET平台语言C#,VB.NET,JVM平台的java等)
其虽然也有编译过程,但其直接将源代码转为中间代码而不是目标代码(此时不是汇编代码更不是机器码,而是可被.NET或JVM引擎解释执行的代码)

可参看编译原理等相关教材,阿门。。。

❽ C语言中 预处理文件(#define),宏定义(#define)两个写法一样有什么区别一定采纳

宏定义是预处理的,预处理的不止是宏定义。包括你包含的头文件,预处理的定义在以后你学到编译原理这门课的时候会解释,他是编译之前做的一件事情。总之,宏定义跟预处理不是同一概念,只是宏定义在编译的过程中是预处理的。 望采纳!

热点内容
curl静态编译 发布:2025-05-14 04:09:52 浏览:159
压缩久期 发布:2025-05-14 04:08:46 浏览:941
sql置疑 发布:2025-05-14 04:07:09 浏览:441
java面试的算法题 发布:2025-05-14 04:06:18 浏览:467
交叉编译优化 发布:2025-05-14 03:48:52 浏览:532
动图在线压缩 发布:2025-05-14 03:35:24 浏览:133
w7共享无法访问 发布:2025-05-14 03:35:24 浏览:483
为什么微信会出现账号密码错误 发布:2025-05-14 03:03:30 浏览:693
幻影脚本官网 发布:2025-05-14 03:01:13 浏览:827
servlet的webxml怎么配置 发布:2025-05-14 02:51:46 浏览:773