导航:首页 > 源码编译 > C预编译是什么意思

C预编译是什么意思

发布时间:2023-05-22 17:37:43

A. c语言,编译、预编译区别

预编译又叫预处理是在编译之前完成的事情,主要是完成宏替换、文件包含和条件编译的处理
处理完的结果还是C程序,不是机器语言
而编译就是要把C语言的程序变成机器语言了

B. 什么是预编译 何时需要预编译 mfc面试

预编译,顾名思义,“预”表示是在真正编译前做的工作,既然也包含“编译”二字,那与一些算法逻辑是分不开的。

对于预编译,是以符号#开头的,包含以下几部分语法:
(1)#include

该指令将xxx.xxx文件的全部内容插入此处,通常文件是后缀名为"h"或"cpp"的头文件。
若用<>括起文件则在系统的INCLUDE目录中寻找文件
若用" "括起文件则在当前目录中寻找文件。
(2)#define
该指令有以下几种用法:
第一种是定义标识,标识有效范围为整个程序,形如#define XXX,常与#if配合使用;
第二种是定义常数,如#define max 100,则max代表100。
第三种是定义"函数",如#define get_max(a, b) ((a)>(b)?(a):(b)) 则以后使用get_max(x,y)就可以得到x和y中较大的数。
第四种是定义"宏函数",如#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

C. 什么是预编译和实时编译

预编译就是在你代码编译之前做的一些动作,比如你代码里写了
#define size 10
int a[size];
预编译就会把这个size替换掉
int a[10];

实时编译,一般是指那些动态语言,在执行到该代码的时候进行编译,例如
scipy.weave 里面可以嵌入C代码,并在程序的执行过程中,调用gcc编译器把这段C代码编译成二进制,并调用其中的函数执行。

D. C语言中预编译有哪几步

预编译又称为预处理,是做些代码文本的替换工作
处理#开头的指令
主要有这么几步。
拷贝#include包含的文件代码,#define宏定义的替换,条件编译等

E. 初学c语言时,输入程序后运行,是执行还是预编译预编译是什么为什么最开始要有#include如

预编译是把一个工程中较稳定的代码预先编译好放在一个文件里.这些预先编译好的代码可以是任何的C/C++代码。而输入程序后的运行,只是将代码编译成了obj(object)文件,所有obj文件经链接(link)成为可执行文件。而你说的执行,应该就是点击最后生成的.exe文件了。开始要有的#include,是表明要包含的头文件,或者其它的保存的代码文件。只有这样,你才可以引用到那个文件中的代码,来供目前的文件来使用。
至于你说的什么大型游戏的编程,应该也是这样的一套,因为C语言就是上述生成文件的套路。游戏的编程,初学的话可以建议看《游戏编程入门》( 美 哈本),这本书基于windows平台,是为几乎没有游戏开发经验的初学者写的,循序渐进,从2D讲到3D 的一些基本技术,其中的例子也非常经典,看完书基本就可以做出不错的2D 游戏了,也有了一定的3D基础了,之后再看一些深入的书籍像《Windows游戏编程大师技巧》。

F. 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源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。

注意:

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

G. c语言,编译、预编译区别

任何一种编程语言的编译都是把代码转换成机器代码认识的格式的过程,而C语言里的预编译则是进行类似转换宏,头文件的代码拷贝,条件语句转换等等基础的转换工作。详细可以看看网络里的内容。

H. c语言程序,预编译的作用是什么

预编译又称为预处理 , 是做些代码文本的替换工作。
处理 # 开头的指令 ,
比如拷贝 #include 包含的文件代码,
#define 宏定义的替换 , 条件编译等,
就是为编译做的预备工作的阶段,主要处理#开始的预编译指令,预编译指令指示了在程序正式编译前就由编译器进行的操作,可以放在程序中的任何位置。
c 编译系统在对程序进行通常的编译之前,先进行预处理。 c 提供的预处理功能主要有以下三 种:
1)宏定义 #definemin(a,b)((a)>(b)?(b)::(a))
2 )文件包含 如:#include<stdio.h>
3 )条件编译#ifndefGRAPHICS_H
#defineGRAPHICS_H
*****
#endif

#ifdefGRAPHICS_H
*****
#else
*****
#endif

I. c语言程序,预编译的作用

我们在用c做开发的时候,有时候项目很大,所写的程序会很长。这样我们如果还是写在一个文件中,会出现管理上的问题和查看上的不方便,因此我们可以分多个文件写我们的程序,这样把一个功能的程序写到一个文件里,便于查看也便于管理。但是把他们合起来的时候。头文件会多次包含预编译,预编译的处理就可以用来防止头文件的重复包含和编译。
第二,使用宏定义可以提高程序的通用性和易读性,减少不一致性,减少输入错误便于修改。展开宏也是预编译处理中的一项功能。
还有条件编译处理也是预处理中的一项功能。

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

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

阅读全文

与C预编译是什么意思相关的资料

热点内容
单片机程序员培训 浏览:990
PHP商城源代码csdn 浏览:634
怎么把电脑里文件夹挪出来 浏览:693
java流程处理 浏览:683
ftp创建本地文件夹 浏览:659
腰椎第一节压缩 浏览:738
xp去掉加密属性 浏览:117
2345怎么压缩文件 浏览:982
迷你夺宝新算法 浏览:407
服务器如何防止木马控制 浏览:715
压缩空气用电磁阀 浏览:742
微信为什么不能设置加密认证 浏览:672
邓伦参加密室逃脱视频 浏览:391
音频压缩编码标准 浏览:300
常提到的app是表示什么 浏览:261
天津程序员传销 浏览:349
下班之后的程序员 浏览:73
检测支持ssl加密算法 浏览:344
衢州发布新闻什么APP 浏览:85
中国移动长沙dns服务器地址 浏览:252