c语言与宏指令有什么关系,plc与C语言有什么关系?

2020-11-23 13:50:26 字数 6680 阅读 4233

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...