百摩网
当前位置: 首页 生活百科

宏程序的各种参数及设置(每个代码工程都在使用的宏定义)

时间:2023-07-12 作者: 小编 阅读量: 1 栏目名: 生活百科

最后一个#define定义了一种简短记法,以便在switch语句中使用。也就是说,宏与类型无关。和函数相比的话,宏也是有缺点的,不利之处就在于每次使用宏时,一份宏定义的代码都将重新拷贝并插入程序中,除非宏非常短,否则使用宏可能会大幅度增加程序的长度。

1、前言

编译一个C程序的第一个步骤被称为预处理,也就是在源代码编译之前对其进行一些文本替换的操作,而一个常见的约定是把宏名字全部大写(用以区分宏和函数,因为在某些场合我们会以宏的形式来实现函数的功能)。

2、宏的常用场合

为了便于一些通用代码模板的维护与扩展,我们在实际开发中会经常使用宏定义。使用#define指令,你可以把任何文本替换到程序中。这里有几个例子:

第1个定义只是为关键字register创建了一个简短的别名。第2个定义用一个更具描述性的符号来代替一种用于实现无限循环的for语句类型。最后一个#define定义了一种简短记法,以便在switch语句中使用。它自动的把一个break放在每个case之前,原因在于在switch语句中,不遇到break就不会主动退出,一直到语句执行完毕,而很多人常常会在case分支忘记加上break。值得注意的是,如果定义中的语句非常长,它可以分成几行,除了最后一行之外,每行的末尾都要加上一个反斜杠,如下所示:

3、宏与函数

宏非常频繁的用于执行简单的计算,比如在两个表达式中寻找较大(或较小)的一个:

为什么不用函数来完成这个任务呢?有两个原因。首先,用于调用和从函数返回的代码很可能比实际执行这个小型计算工作的代码更大,所以使用宏比使用函数在程序的规模和速度方面都更胜一筹。但是,更为重要的是,函数的参数必须声明为一种特定的数据类型,所以它只能在类型合适的表达式上使用。反之,上面这个宏可以用于整型、长整型,浮点型以及其他任何可以用‘>’操作符比较大小的类型。也就是说,宏与类型无关。和函数相比的话,宏也是有缺点的,不利之处就在于每次使用宏时,一份宏定义的代码都将重新拷贝并插入程序中,除非宏非常短,否则使用宏可能会大幅度增加程序的长度。

正如上面所说,宏与函数不同,宏在连续几个调用中所接收的参数类型可以不同,只是简单的对字符串进行替换而已。特别需要注意的一点是:在宏的扩展中,空格会对扩展的结果造成很大的影响,示例如下:

被扩展为:

而:

则被扩展为:

造成的结果是:他们所表示的意思天差地别(没有看明白的小伙伴欢迎在评论区交流哦)。

另外给大家补充一个小技巧,平常工作的开发中不一定用得到,理解这个思想就行。如下:Steve Bourne在编写UNIX第七版的shell(命令解释器)时,采用了C预处理器(也就是宏#define)使C语言看上去更像是shell编程里的风格,shell编程代码中有显示的“结束语句”提示,诸如if...fi或者case...esac等,调试起来会更容易。Steve认为仅仅一个“}”是不够的,因此他建立了一批宏定义如下:

这样,就可以像下面这样编写代码:

再看一下相应的C代码:

本文章结束之前提一个小问题:上图中的C代码是否有错呢?如果有错的话错在哪?没错的话为什么在函数名和函数体之间有奇怪的s1和s2的声明?欢迎在评论区交流。

请关注笔者,后续会定期更新C编程相关知识和技巧,我们一起学习一起进步。

    推荐阅读
  • 买火车票怎么在线选座(买火车票在线选座的方法)

    下面更多详细答案一起来看看吧!买火车票怎么在线选座首先打开智行12306这个app,进入智行后,你会看到出现一个新的界面。在所示的区域内,输入你的目的地和出发地点。你会看到出现一个新的界面,直接点击靠窗的座位,这样就可以买到靠窗的座位啦。

  • 手机盖板和手机钢化膜有什么区别(最没用的手机配件排行)

    正也是如此,其实钢化膜发明的本身并不是防摔,而是防刮花。磨砂钢化膜的出现,就是为了抗指纹,也是为了,一些喜欢打游戏的玩家手出汗而发明的一种钢化膜。这种钢化膜发明的初衷是非常好的,但是奈何人们对手机的要求太高。这种钢化膜贴完之后,屏幕指纹一般都不能用了,想要能用就要在指纹解锁的区域下功夫,把那一块的磨砂减少,达到正常显示的效果,才能继续使用。

  • 辟谷是什么意思(辟谷是什么意思是不吃饭吗)

    常识告诉我们,人生下来就要吃东西,喝水,否则就会死。科学家发现:不吃食物的人,最多能活10至15天;如果连水都不喝,7天就会死。据说练成这种功夫的人,可以常年不用进食,仅靠“喝”西北风生存。如《淮南子》“欲长生,腹中清,欲不死,腹无滓”。辟谷术起于先秦,大约与行气术同时。是为辟谷术最早的理论根据。道教创立后,承袭此术,修习辟谷者,代不乏人。从汉至宋,辟谷术在道教内一直十分流行。

  • 女性雌性激素低是为什么(女人雌性激素低)

    因为卵巢功能保持良好,雌激素才能分泌出来维持正常的生命活动。对于女性来说想要保持身体健康状态,饮食科学合理尤为关键,在饮食过程中获取人体需要的营养物质,才能维持身体健康。如果卵巢受到影响,雌性激素分泌量不足,往往容易导致女性身体衰老明显。情绪合理控制了,身体才能维持健康,这是导致女性雌性激素偏低的原因,需要及时改善。

  • 博物馆是干什么的(博物馆简介)

    我们一起去了解并探讨一下这个问题吧!博物馆是干什么的博物馆是征集、典藏、陈列和研究代表自然和人类文化遗产的实物的场所。并对那些有科学性、历史性或者艺术价值的物品进行分类。为公众提供知识、教育和欣赏的文化教育的机构、建筑物、地点或者社会公共机构。博物馆是非营利的永久性机构,对公众开放,为社会发展提供服务,以学习、教育、娱乐为目的。

  • 玉兔二号什么时候回来(现重大故障已放弃)

    但没想到对于这项由中国人创造的人类壮举,该来的中伤还是来了,关于玉兔二号的谣言虽然迟到,但是最终没有缺席,且这一次还是以一种让人啼笑皆非的方式。

  • 电线有几种规格大小(电线尺寸到底有多大)

    同时为了安全起见,用于空调的电线不要小于2.5平方尺寸。在使用热水器时,尽量不要同时开太多其他家电,以免由于负载过多出现跳闸的情况。再仔细看,还能看到生产许可证号,有了这两点,代表这些电线是经过国家认证的,可以安全放心使用。为了掩人耳目,使缩短的电线看起来与正规电线无异,便会在电线外皮上做手脚,将电线的绝缘外皮加厚,使其大小看起来相差无几,这种情况一般就很难被人发现了。

  • 2022青海省成人高考报名时间(2022青海省成人高考报名时间及考试)

    凡隐瞒或谎报旅居史、接触史、健康状况等疫情防控重点信息的承担相应法律责任。

  • 青春有你2成员名单排名(青春有你2成员有谁)

    青春有你2成员名单排名第一名:刘雨昕、第二名:虞书欣、第三名:许佳琪、第四名:喻言、第五名:谢可寅、第六名:安崎、第七名:赵小棠、第八名:孔雪儿、第九名:陆柯燃。《青春有你第二季》是爱奇艺出品的青年励志综艺节目。由蔡徐坤担任青春制作人代表、LISA担任舞蹈导师、陈嘉桦担任音乐导师、JONYJ担任说唱导师,召集了109位选手,通过任务、训练、考核,让选手在明星导师训练下成长,最终选出9位选手,组成偶像团体出道。

  • 思念的美文句子(有哪些表达思念的句子)

    以下内容希望对你有帮助!思念的美文句子思念是一种酸甜的味道,思念是一种温柔的心疼,思念是一种沉沉的忧郁,思念是一种时时刻刻永驻心底的牵挂,那是一种只有分别的人才能尝到的滋味。思念是一种幸福的忧伤,是一种甜蜜的惆怅,是一种温馨的痛苦。思念是对昨日悠长的沉湎和对未来美好的向往。