三九宝宝网宝宝教育教学论文

预处理指令有什么作用

03月14日 编辑 39baobao.com

[蚂蚁的触角有什么作用][活动目标] 通过观察没有触角的蚂蚁,了解昆虫触角的作用,培养幼儿的观察力及模仿能力。 [活动准备] 小蚂蚁若干、放大镜、纸盒、白纸、彩色笔。 [活动过程] 一、看一看。 童话剧情景...+阅读

程序设计语言的预处理的概念:在编译之前进行的处理。 C语言的预处理主要有三个方面的内容: 1.宏定义; 2.文件包含; 3.条件编译。 预处理命令以符号“#”开头。1.不带参数的宏定义: 宏定义又称为宏代换、宏替换,简称“宏”。 格式: #define标识符 字符串 其中的标识符就是所谓的符号常量,也称为“宏名”。 预处理(预编译)工作也叫做宏展开:将宏名替换为字符串。 掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。 即在对相关命令或语句的含义和功能作具体分析之前就要换: 例: #define PI 3.1415926 把程序中出现的PI全部换成3.1415926 说明:

(1)宏名一般用大写

(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义

(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。

(4)宏定义末尾不加分号;

(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。

(6)可以用#undef命令终止宏定义的作用域

(7)宏定义可以嵌套

(8)字符串" "中永远不包含宏

(9)宏定义不分配内存,变量定义分配内存。 2.带参数的宏: 除了一般的字符串替换,还要做参数代换 格式: #define 宏名(参数表) 字符串 例如:#define S(a,b) a*b area=S(3,2);第一步被换为area=a*b; ,第二步被换为area=3*2; 类似于函数调用,有一个哑实结合的过程:

(1)实参如果是表达式容易出问题 #define S(r) r*r area=S(a+b);第一步换为area=r*r;,第二步被换为area=a+b*a+b; 正确的宏定义是#define S(r) (r)*(r) (2)宏名和参数的括号间不能有空格

(3)宏替换只作替换,不做计算,不做表达式求解

(4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存

(5)宏的哑实结合不存在类型,也没有类型转换。

(6)函数只有一个返回值,利用宏则可以设法得到多个值

(7)宏展开使源程序变长,函数调用不会

(8)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值) 2文件包含 编辑 一个文件包含另一个文件的内容 格式: #include "文件名" 或 #include 编译时以包含处理以后的文件为编译单位,被包含的文件是源文件的一部分。 编译以后只得到一个目标文件.obj 被包含的文件又被称为“标题文件”或“头部文件”、“头文件”,并且常用.h作扩展名。 修改头文件后所有包含该文件的文件都要重新编译 头文件的内容除了函数原型和宏定义外,还可以有结构体定义,全局变量定义:

(1)一个#include命令指定一个头文件;

(2)文件1包含文件2,文件2用到文件3,则文件3的包含命令#include应放在文件1的头部第一行;

(3)包含可以嵌套;

(4)称为标准方式,系统到头文件目录查找文件, "文件名"则先在当前目录查找,而后到头文件目录查找;

(5)被包含文件中的静态全局变量不用在包含文件中声明。 3条件编译 编辑 有些语句希望在条件满足时才编译。 格式:

(1) #ifdef 标识符 程序段1 #else 程序段2 #endif 或 #ifdef 程序段1 #endif 当标识符已经定义时,程序段1才参加编译。 格式:

(2) #ifndef 标识符 格式:

(3) #if 表达式1 程序段1 #elif 表达式2 程序段2 …… #elif 表达式n 程序段n #else 程序段n+1 #endif 当表达式1成立时,编译程序段1,当不成立时,编译程序段2。 使用条件编译可以使目标程序变小,运行时间变短。 预编译使问题或算法的解决方案增多,有助于我们选择合适的解决方案。 此外,还有布局控制:#pragma,这也是我们应用预处理的一个重要方面,主要功能是为编译程序提供非常规的控制流信息。

预处理指令在c语言中是什么东西他是什么作用

预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替 换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种

文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合 源程序正文。

条件编译:#if,#ifndef,#ifdef,#endif,#undef等也是比较常见的预处理, 主要是进行编译时

进行有选择的挑选, 注释掉一些指定的代码, 以达到版本控制、 防止对文件重复包含的功能。

布局控制:

#progma,这也是我们应用预处理的一个重要方面,主要功能是 为编译程序提供非常规的控制流信息。 宏替换:

#define,这是最常见的用法,它可以定义符号常量、函数功能、 重新命名、字符串的拼接等各种功能

C语言中很多的预处理指令include define等等它们各自的意义分别是

include的作用: #include叫做“文件包含” / include 语句包含并运行指定文件。 功能:它的功能是用来指定文件的全部内容替换程序中的命令行,从而使指定的文件与当前源文件连成一个源文件 书写格式: #include//表示编译系统根据系统头文件存放的目录路径去搜索系统头文件,而不是在源文件目录去查找 #include "文件名" //表示编译系统首先在当前的源文件目录中查找,若未找到才根据系统的头文件存放的目录路径去搜索系统头文件 //系统定义的头文件通常使用尖括号;用户自定义的头文件通常使用双引号。 //一般来说,如果为调用库函数而用#include命令来包含相关的头文件,则用尖括号,以节约查找时间。 //如果要包含的是用户自己编写的文件(这种文件一般都在用户当前的目录中),一般用双撇号。

//若文件不在当前目录中,在双撇号内应该给出文件路径(如#include"C:\wang\file2.h") ----------------- 1.#define 的作用 在C或C++语言源程序中允许用一个标识符来表示一个字符串,称为“宏”。被定义为“宏”的标识符称为“宏名”。在编译预处理时,对程序中所有出现的“宏名”,都用宏定义中的字符串去代换,这称为“宏代换”或“宏展开”。宏定义是由源程序中的宏定义命令完成的。宏代换是由预处理程序自动完成的。 在C或C++语言中,“宏”分为有参数和无参数两种。 2. 无参宏定义 无参宏的宏名后不带参数。 其定义的一般形式为: #define 标识符 字符串 其中的“#”表示这是一条预处理命令。凡是以“#”开头的均为预处理命令。“define”为宏定义命令。“标识符”为所定义的宏名。

“字符串”可以是常数、表达式、格式串等。 例如: #define M (a+b) 它的作用是指定标识符M来代替表达式(a+b)。在编写源程序时,所有的(a+b)都可由M代替,而对源程序作编译时,将先由预处理程序进行宏代换,即用(a+b)表达式去置换所有的宏名M,然后再进行编译。 程序1: #define M (a+b) main(){ int s,y; printf("input a number: "); scanf("%d",&y); s=M*M; printf("s=%d\n",s); } 上例程序中首先进行宏定义,定义M来替代表达式(a+b),在 s= M * M 中作了宏调用。在预处理时经宏展开后该语句变为: S=(a+b)*(a+b) 但要注意的是,在宏定义中表达式(a+b)两边的括号不能少。否则会发生错误。 如当作以下定义后:#difine M (a)+(b) 在宏展开时将得到下述语句:S= (a)+(b)*(a)+(b) 对于宏定义还要说明以下几点: 1. 宏定义是用宏名来表示一个字符串,在宏展开时又以该字符串取代宏名,这只是一种简单的代换,字符串中可以含任何字符,可以是常数,也可以是表达式,预处理程序对它不作任何检查。

如有错误,只能在编译已被宏展开后的源程序时发现。 2. 宏定义不是说明或语句,在行末不必加分号,如加上分号则连分号也一起置换。 3. 宏定义必须写在函数之外,其作用域为宏定义命令起到源程序结束。如要终止其作用域可使用#undef命令。 3. 带参宏定义 c语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为: #define 宏名(形参表) 字符串 在字符串中含有各个形参。 带参宏调用的一般形式为: 宏名(形参表) 例如: #define M(y) ((y)*(y)+3*(y)) /*宏定义*/ .... k=M(5); /*宏调用*/ .... 在宏调用时,用实参5去代替形参y,经预处理宏展开后的语句为: k=5*5+3*5 程序2: #define MAX(a,b) (a>b)?a:b main(){ int x,y,max; printf("input two numbers: "); scanf("%d%d",&x,&y); max=MAX(x,y); printf("max=%d\n",max); } 上例程序的第一行进行带参宏定义,用宏名MAX表示条件表达式(a>b)?a:b,形参a,b均出现在条件表达式中。

程序第七行max=MAX(x,y)为宏调用,实参x,y,将代换形参a,b。宏展开后该语句为: max=(x>y)?x:y; 用于计算x,y中的大数。

以下为关联文档:

汇编语言程序指令知多少谁能告诉我汇编语言程序指令并带有解释谢谢附表5。2 指令汇编格式 指令类型 指令汇编格式 指令功能简介 传送指令 MOV reg/mem,imm ;dest←src MOV reg/mem/seg,reg MOV reg/seg,mem MOV reg/mem,seg 交换指令 XCHG r...

动物的尾巴有什么作用教案活动目标: 1.在游戏情境中了解不同动物尾巴的形态和功能,学习从“粗细”“外形”“功能”三个角度来描述动物尾巴的特点; 2.喜欢小动物,愿意了解更多有关动物的知识。 活动重点:...

汇编语言有符号乘法指令汇编语言有符号乘法指令大全 MOV(MOVE) 传送指令P28 PUSH 入栈指令P32 POP 出栈指令P33 XCHG(eXCHanG) 交换指令P34 XLAT(TRANSLATE) 换码指令P34 LEA (Load Effective Addr...

中班听指令备课一、活动目标 1、在游戏中体验按指令活动的愉快。 2、培养幼儿注意倾听的态度和习惯。 二、重点与难点 听清完整的指令才能行动。 三、材料及环境创设 1、场景布置:草地、路...

中班活动教案:雪有什么作用名称:玩雪 目标:1、知道只有冬天才下雪,能体会到玩雪的乐趣。 2、能根据自己的感受画出玩雪的情景。 3、能用唱歌、跳舞、绘画的形式表现出玩雪的快乐心情。 准备:下雪的场景玩...

汇编语句指令的格式是什么一般格式如下: [标号] 操作符 操作数 [;注释] 注:[ ]内部分可以没有 1、标号 标号是程序员自己定义的标识符号,简称标号(有时也称为名字)。 2、操作符 操作符可以是指令助记符、伪...

dos有什么作用?1.确切的说是CMD命令提示符(DOS是一个老操作系统,cmd是对DOS的模拟),功能齐全强大。说到学习,主要是个人需要,你不用它电脑照样用,你要学了它,电脑还是一样用。只是你可以做一些特别...

汇编中的dec指令是什么指令寄存器存储指令。 CPU机器指令的助记符,编译后得到1和0组成的机器码,由CPU读取执行。为了让CPU处理起来更加的具有效率,CPU往往是一边执行指令的同时就在提前读取下面的指令了,...

c语言中预处理命令都有哪些c语言中预处理命令都有哪些,C语言中很多的预处理指令include define等等它们各自的意义分别是:我们可以在C源程序中插入传给编译程序的各中指令,这些指令被称为预处理指令,它...

推荐阅读
图文推荐