宏函数编程
㈠ 瀹忕紪绋嬩腑濡备綍銮峰彇琛屾槸钖︽湁鍐呭
瀹忕紪绋嬫槸涓绉嶅湪璁$畻链虹▼搴忎腑浣跨敤镄勫畯璇瑷锛岀敤浜庡湪缂栬疟鎴栬В閲婅繃绋嬩腑杩涜屼唬镰佺殑灞曞紑鍜屾浛鎹銆傚湪瀹忕紪绋嬩腑锛岃幏鍙栬屾槸钖︽湁鍐呭规槸涓绉嶅父瑙佺殑闇姹傦纴鍙浠ラ氲繃浠ヤ笅鏂规硶𨱒ュ疄鐜帮细
🔍浣跨敤𨱒′欢鍒ゆ柇璇鍙
鍙浠ヤ娇鐢ㄦ浔浠跺垽鏂璇鍙ワ纸濡俰f璇鍙ワ级𨱒ュ垽鏂琛屾槸钖︽湁鍐呭广傞氲繃璇诲彇琛岀殑鍐呭瑰苟妫镆ュ叾闀垮害鎴栨槸钖︿负绌猴纴鍙浠ョ‘瀹氲屾槸钖︽湁鍐呭广傚傛灉琛岀殑闀垮害澶т簬0鎴栦笉涓虹┖锛屽垯琛ㄧず琛屾湁鍐呭广
🔍浣跨敤瀛楃︿覆澶勭悊鍑芥暟
鍒╃敤瀛楃︿覆澶勭悊鍑芥暟鍙浠ュ硅岃繘琛屽勭悊鍜屽垎鏋愩傚彲浠ヤ娇鐢ㄥ嚱鏁板俿trlen()𨱒ヨ幏鍙栧瓧绗︿覆镄勯暱搴︼纴铹跺悗鍒ゆ柇琛屾槸钖︽湁鍐呭广傚傛灉琛岀殑闀垮害澶т簬0锛屽垯琛ㄧず琛屾湁鍐呭广
🔍钥冭槛鐗规畩瀛楃
鍦ㄥ垽鏂琛屾槸钖︽湁鍐呭规椂锛岄渶瑕佽冭槛鍙鑳藉瓨鍦ㄧ殑鐗规畩瀛楃︼纴濡傜┖镙笺佸埗琛ㄧ︾瓑銆傚彲浠ヤ娇鐢ㄥ瓧绗︿覆澶勭悊鍑芥暟鎴栨e垯琛ㄨ揪寮忔潵澶勭悊杩欎簺鐗规畩瀛楃︼纴纭淇濆嗳纭鍒ゆ柇琛屾槸钖︽湁鍐呭广
㈡ c语言中的“宏”是指什么
是一种批量处理的称谓。计算机科学里的宏是一种抽象(Abstraction),它根据一系列预定义的规则替换一定的文本模式。
“宏”这个词的使用暗示着将小命令或动作转化为一系列指令。
计算机语言如C语言或 汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。
在Objective-C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,被定义为宏的标识符称为宏名。在编译预处理时,对程序中所有出现的宏名,都用宏定义中的字符串去替换,这称为宏替换或宏展开。
宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。在Objective-C语言中,宏分为有参数和无参数两种。
(2)宏函数编程扩展阅读
A类宏是用G65 Hxx P#xx Q#xx R#xx或G65
Hxx P#xx Qxx
Rxx格式输入的,xx的意思就是数值,是以um级的量输入的,比如你输入100那就是0.1MM #xx就是变量号,变量号就是把数值代入到一个固定的地址中,固定的地址就是变量。
一般OTD系有#0~#100~#149~#500~#531.关闭电源时变量#100~#149被初始化成“空”,而变量#500~#531保持数据。我们如果说#100=30那么现在#100地址内的数据就是30了。
B类宏能完成某一功能的一系列指令像子程序那样存入存储器,用户可以设定M、S、T、G代码调用它们,使用时只需给出这个指令代码就能执行其功能,也可以像调用子程序一样使用。
㈢ c语言宏定义函数如何调用(里面含参数可以当函数用吗)
直接调用即可。如下示例:
#include<stdio.h>#definesum(b,c){intd=0;d=b+c;printf("两者的和:%d ",d);}intmain(){intx=0,y=0;scanf("%d%d",&x,&y);sum(x,y);return0;}若是普通函数,则通过递归,可取的最大值,时间复杂度为O(n)。但若是宏函数,则宏展开为( a[n]>max(n-1)?a[n]:max(n-1) ),其中max(n-1)被调用了两遍,这样依此递归下去,时间复杂度会很高。