1楼:匿名用户
c语言里面可以用宏定义
都一样了,就像你申明一个变量一样简单.
2楼:平凡人生
#define m(宏定义名) 2*3(表达式)
相当于用m替代后面的表达式
3楼:匿名用户
c语言是高级语言。
宏指令是汇编语言程序中的一种伪指令。
最终它们都是编译成cpu能够识别的二进制指令。
4楼:
宏指令是在预编译时解释
而c语言是在编译时解释
5楼:自然之风祥
程序的整体编译过程为:预处理、编译、优化、汇编、连接。宏指令主要用到的死#define,#ifdef,#endif等,预处理就是处理这些指令
宏指令和子程序的异同?编程时如何选用?(微机汇编)
6楼:夜隐霜华
宏与子程序都可以用一个名字定义一段程序,以简化源程序的结构和设计。二者的区别:
1、在源程序中,通过书写宏名来引用宏,而子程序是通过call指令来调用;
2、宏调用是通过宏扩展来实现的,宏引用多少次,就相应扩展多少次,所以,引用宏不会缩短目标程序;而子程序**在目标程序中只出现一次,调用子程序是执行同一程序段,因此,目标程序也得到相应的简化
子程序优点:模块化,节省内存,可被多次调用,编程效率高。
缺点:额外开销(保存返回地址,计算转向地址,传递参数等)大,增加了执行时间。适用于子功能**较长、调用比较频繁的情况。
宏调用:
优点:参数传送简单,执行效率高。
缺点:不节省空间,适用于子功能**较短、传参较多的情况。
7楼:匿名用户
宏程序是用逻辑语言!用某种指令表示出来,
子程序就是一个程序多次反复利用,比如打孔,然后攻丝,那么就可以把它设为子程序,然后在主程序中调用就可以了,简化程序
plc与c语言有什么关系?
8楼:匿名用户
plc为可编程逻辑控制器(programmable logic controller)的首字母缩写。是一种面向工业控制的微型计算机系统。
plc的硬件系统必须有控制器(单片机、cpu、fpga等)、执行器(继电器、光耦输入等)、主板(电路板),三者缺一不可。由于现在的8位单片机片内存储容量最大可达64kb的程序存储器或4kb的数据存储器,32位单片机也有512kb的程序存储器和128kb的数据存储器,所以功能简单的plc不需要片外存储器(内存芯片、内存条)也可以运行。而功能较强的plc则需要片外存储器、辅助存储器(硬盘、sd卡)等附加设备。
plc的软件系统分为三个部分:
1、plc主机上运行的下位机程序。用于控制输出、检测输入以及与上位机进行通讯。该程序是梯形图转c语言或汇编语言,再编译后烧写到plc的程序存储器内的。
虽然编译的过程要经过c语言或汇编语言,但是plc厂家一般不允许用户直接使用c语言或汇编语言编写plc主机的下位机程序。
2、plc编程软件。用于向下位机写入用户的控制方法。它将用户的梯形图转换成c语言程序或汇编语言程序,编译后烧写到plc的程序存储器中。
编程软件本身可以由c语言、c++语言等高级语言开发。具体使用的开发语言需要向相应的plc厂家了解。
3、上位机软件。用于宏观上协调控制plc的运行状态,代替plc进行复杂的计算,存储设备的运行记录,并以可视化方式向管理员反馈系统信息。常见的上位机软件为“组态软件”,它是由plc厂家或软件公司开发的上位机控制平台。
用户可以使用指定的脚本语言进行二次开发。如“组态王”软件就指定使用basic语言进行二次开发。如果不使用组态软件,用户也可以使用汇编、c语言、c++、java、basic等各种编程语言,在它们各自的编译器上编写**,开发自己的上位机软件。
c语言是一种面向过程的通用计算机编程语言,作为编程语言用户数量排行榜上稳坐前4的编程语言,广泛应用于工业控制(*plc驱动、*嵌入式系统、上位机软件)、游戏开发(▲directx、▲physicx、大型游戏开发)、操作系统开发(*windows核心、*linux核心、*android核心)、驱动程序开发(*usb驱动、*串口驱动、*网卡驱动、*硬盘驱动)、软件平台搭建(java虚拟机、oracle数据库)、大型应用软件开发(office、vm workstation、cad、photoshop、solidworks、matlab)之中。上述例子中,凡左边带“*”的例子,如果不使用c语言,就只能选择汇编语言,没有其它选择的余地,凡左边带“▲”的例子,必须经过c语言进行过渡才能使用其它语言,左边不带标志的,可以使用c语言以外的语言,但使用c语言将大大简化软件的开发(主要是软件性能很容易提升)。另外,c语言之所以叫“c”语言,是因为它是继“b语言”之后出现的编程语言,这个c代表的只是一个顺序。
对比之后可知,plc是一个工业控制系统,包含软硬件的概念。c语言是构建工业控制系统及其它软件的工具之一。它们之间是房屋与符号的关系。
plc是房屋,c语言是符号。符号连同其它图素在纸上绘成蓝图、再将各种材料按蓝图进行组装就成了房屋。可是建成的房屋上却看不到符号的存在,而符号不止可以用来设计房屋,还可以做更多更伟大的事情。
c语言中“宏”是个什么东西 有什么意义
9楼:匿名用户
宏定义的
作用在预编译阶段,形如 #define a b 就是宏定义了,作用就是在预编译阶段将程序中的a全部视为b,举个例子:
我们在程序最开始,声明如下宏定义
#define pi 3.1415926
那么在我们写程序的时候,我们可以直接使用pi作为一个常量来使用,那么当我们编译程序的时候,编译器会自动将程序中出现的pi替换成3.1415926
第二个例子,利用宏定义定义傻瓜函数
#define mul(a,b) a*b
那么我们可以将mul()在程序中当成函数来使用,为什么叫做傻瓜函数一会来解释,使用方法
mul(3,5) 那么这段**就相当于计算3*5=15
那么当我们如下使用时就会出现问题
mul(3+2,3) 我们期待的结果是15,而实际结果是9,为什么呢?因为在程序会如下转换
3+2*3=3+6=9 这也就是为什么我们管宏定义出来的函数叫傻瓜函数的原因了~~~
楼主呀~~~完全手写,一定要好评呀!^_^
10楼:匿名用户
“宏”,就是大的意思,c语言中的宏,是一种可以代表任何语言元素的标识符。
这里还有一个概念,就是宏定义,例如:#define a b+c宏定义出现在c语言的源**中,在正式编译前,编译器会进行预处理,而预处理过程包括一个很重要的任务(当然还有其它任务),就是替换宏,这种替换是一种机械的替换,并不考虑标识符的语法,语义,也就是说当遇到上面的a时,会直接替换成b+c。
还有一种更加灵活的宏,是带参数的宏,例如:#define f(a,b) (a)+(b)
替换时会根据引入参数,这样,f(1,2)会被替换成(1)+(2)。
11楼:匿名用户
宏就是 用一个声明去定义一样变量或者函数 就比如 你为你的朋友起个花名 你以后就可以用花名替代他原来的名字
c语言中常量定义和宏定义有什么区别?
12楼:刘文正粉丝
区别大了个去了.
宏定义是预处理命令.
#defien a 3
执行后, 预处理器把会正文所有全字匹配的a, 全部替换为3,那么, 最后的**进入编译器的**,
1 + a, 是变成1 + 3的.
而const int a = 3;
这个是不在预处理器的管理范围之内 ,这个就是编译器的工作了, 有些编译器不会为它分配空间, 直接把它加入符号表中, 也就是说, 常量不再是0123456789这10个数, 而是0123456789a这11个数, 那么a就是被定义成3了, 所以符号表里的内容是01234567893.
而有些 编译器会为它分配空间.
你不知道它们的区别, 说明你学宏的时候, 并不知道宏的原理.
13楼:金色潜鸟
宏定义 是编译前的预处理。
#define a 3 是在程序正式编译前,做 token a 的字符串替代,凡 token a 都用 3替代, 替代完了再开始编译。
const int a = 3; 是 变量声明和初始化。只是强调了 a 是 常量,不能用来做 “左值”,即,数值不能改变。
14楼:匿名用户
符号常量 #define pi 3.1415926f;
常值变量 const float pi 3.1415926f;
网页链接
在c语言中"宏"是什么意思?
15楼:杨尘一
简单来说:宏定义又称为宏代换、宏替换,简称“宏”。是c提供的三种预处理功能的其中一种。
说明:1、宏名一般用大写
2、使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义
3、预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
4、宏定义末尾不加分号;
5、宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
6、可以用#undef命令终止宏定义的作用域
7、宏定义可以嵌套
8、字符串" "中永远不包含宏
9、宏定义不分配内存,变量定义分配内存。
16楼:萌萌
定义的意思,在c语言中的宏定义就是定义外部变量,内部函数使用exiterm来调用
如:exiterm char c1,c2;
c语言中的宏定义的字是:definec语言中的define宏定义有带参数的和不带参数两中形式,不带参格式是:#define 宏名,字符串带参格式是:
#define 宏名(参数1,参数2,...) 字符串在c语言里宏定义只用来做的宏名替换,而不做语法检查的,因而它不是c语句,所以在宏定义的时候不需要在后面加";"宏也在c里也叫预处理命令,因为宏是在程序编译前先进行字符替换的,所以叫预处理.在c里还有其它的预处理命令如:
#define
#undef
#ifdef等。
c语言中的“宏”是指什么?
17楼:加百列
宏是一种预处理指令,它提供了一种机制,可以用来替换源**中的字符串。
1、条件编译:
c语言中,预处理过程读入源**,检查包含预处理指令的语句和宏定义,并对源**进行相应的转换,预处理过程还会删除程序中的注释和多余的空白符号。
预处理指令是以#开头的**行,#必须是该行除了空白字符外的第一个字符。#后是指令关键字,在#和指令关键字之间允许存在若干空白字符。
使用宏进行条件编译的用法与使用宏防止多重引用类似。示例如下:
使用条件编译,方便程序员在调试程序的过程中,执行一些在程序发布后并不需要执行的指令。只要在需要调试的**前加上_debug的定义,就可以在调试程序的过程中输出调试信息。
这样方便查看程序在运行过程中有没有出现错误,定位错误出现的地方。而在程序发布之前,取消_debug的定义就可以不再执行调试**。
2、宏函数:
函数的调用是需要一定的时间和空间代价的。因为系统在调用函数时,需要保留"现场",即将程序要执行的指令的下一条指令的位置压入栈,然后转入调用函数去执行,调用完函数后再返回主调函数,恢复"现场",返回到栈里保存的的下一条指令的位置继续执行。
所以函数的调用需要额外的时间和空间代价。
而宏函数则不存在上述问题,宏函数在预编译时,同函数定义的**来替换函数名,将函数**段嵌入到当前程序,不会产生函数调用。
所以会省去普通函数保留现场恢复现场的时间,但因为要将定义的函数体嵌入到当前程序,所以不可避免的会占用额外的存储空间。
在频繁调用同一个宏的时候,该现象尤其明显。宏函数的示例定义如下:
#define max(a,b) ((a)<(b)?(b):(a))
宏函数的优点在于避免函数调用,提高程序效率。
同时需要注意的是inline标识符。inline也将函数定义为内联的。但是使用内联函数需要注意的是:
函数体必须十分简单,不能含有循环、条件、选择等复杂结构,否则就不能作为内联函数了。
事实上,有时候即便你没有将函数指定为内联函数,编译器也会将一些简单的函数作为内联函数处理,而对于一些复杂的函数,即使声明为内联函数,编译器也不会理会的。
inline函数的瓶颈就在于此,使用inline标识符将函数声明为内联的,但这只是一种提示,到底编译器有没有优化还依赖于编译器的实现,而使用宏函数则完全由**本身控制。
但在使用宏函数的时候,需要明确的是宏函数只是简单的替换,需要注意括号的使用。
扩展资料:
宏的更多规则特性:
(1)宏名一般用大写。
(2)使用宏可提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改。例如:数组大小常用宏定义。
(3)预处理是在编译之前的处理,而编译工作的任务之一就是语法检查,预处理不做语法检查。
(4)宏定义末尾不加分号。
(5)宏定义写在函数的花括号外边,作用域为其后的程序,通常在文件的最开头。
(6)可以用#undef命令终止宏定义的作用域。
(7)宏定义不可以嵌套。
(8)字符串" "中永远不包含宏。
(9)宏定义不分配内存,变量定义分配内存。
(10)宏定义不存在类型问题,它的参数也是无类型的。
茶文化与佛教有什么关系,茶道与佛教有什么关系?
1楼 文创造物精工局 茶饮具有清新 雅逸的天然特性,能静心 静神,有助于陶冶情操 去除杂念 修炼身心。在魏晋的时候,它就已经成了我国僧道修行时常用的饮料。坐禅很注重五调,即调食 调睡眠 调身 调息 调心。 这种协调被运用到饮茶的过程中,心绪宁静,每一个步骤都既严谨又不失风味。在常人看来,拿壶倒水的几...
功与能量有什么关系?热量与能又有什么关系
1楼 总是东张西望 能量,简称 能 。是描述物质 或系统 运动状态的物理量,是物质运动的一种量度。能量是一个状态量。 各种形式的能量都可以相互转化。 功是描述物体状态改变过程的物理量,是能量变化的量度。功是一个过程量。做功使物体的能量发生了改变。如物体下落,是一个重力做功的过程,在这个过程中,物体的...
c语言中与有何区别,c语言中%c与%s的有什么区别?
1楼 匿名用户 在定义变量时 是定义指针 是引用 注 好象c没有引用 例如 int pvar null 定义一个int类型指针int var 0 int pvar var 定义一个引用 并且定义时要指定所引用的对象 在使用时 是解指针 即取其指向的变量的值 是取地址int var 10 int pv...