工学

问答题什么叫宏?谈谈带参数宏与内联函数之间的异同点。

题目
问答题
什么叫宏?谈谈带参数宏与内联函数之间的异同点。
参考答案和解析
正确答案: 宏是指定义一个标识符来代替一个字符序列。
内联函数和宏都是在程序出现的地方展开,是在调用该函数的程序处或应用宏处将它展开。但内联函数可以多行的程序段,而宏通常是单行代码段。
解析: 暂无解析
如果没有搜索结果,请直接 联系老师 获取答案。
相似问题和答案

第1题:

●下列叙述中正确的是 (34) 。

(34) A.宏替换不占用运行时间

B.在带参的宏定义中,要定义其形式参数的类型

C.在带参的宏定义中,形式参数是变量

D.在带参的宏定义中,形式参数是常量


正确答案:A
【解析】带参的宏定义与函数类似。如果我们把宏定义时出现的参数视为形参,而在程序中引用宏定义时出现的参数视为实参。虽然带参数的宏定义和带参数的函数很相似,但它们还是有本质上的区别:
①在带参的宏定义中,形式参数不是变量,只是一个符号,不分配内存单元,不必定义其形式参数的类型。发生宏"调用"时,只是将实参替换形参。而在函数中,形参和实参是完全独立的变量,它们均有自己的作用域。当调用发生时,实参传递给形参的过程(值传递或引用传递)完全不同于简单的宏替换。
②在宏定义中的形参是标识符,而宏调用中的实参可以是表达式。
③从发生的时间来说,宏"调用"是在编译时发生的,函数调用是在程序运行时发生的;宏"调用"不存在内存单元分配的问题,而函数调用时,会给形参变量分配内存单元,然后复制实参的值,函数调用结束后,形参变量占用的内存单元被释放。

第2题:

为了取代C中带参数的宏,在C++中使用

A.重载函数

B.内联函数

C.递归函数

D.友元函数


正确答案:B
解析:本题考查的知识点是;内联函数。C++引入内联(inline)函数的原因是用它来取代C中的预处理宏函数,即带参数的宏。故本题应该选择B。

第3题:

宏定义可分为带参数的宏定义和不带参数的宏定义两类。()

此题为判断题(对,错)。


参考答案:正确

第4题:

下述描述正确的是(39)。

A.在程序的一行中可以出现多个有效的预处理命令行

B.使用带参宏时,参数的类型应与宏定义时的一致

C.宏替换不占运行时间,只占编译时间

D.宏定义不能出现在函数的内部


正确答案:C
解析:本题考查程序中宏的一些基本知识。宏的作用是定义一个名字替换,一般给容易发生变化的变量定义宏,这样方便对程序中变量的修改。编译器在编译时将宏和变量进行替换,因此,宏替换不占运行时间,只占编译时间。

第5题:

宏定义中DUMMY PARAMETER LIST称为哑元表,给出宏定义中所用到的形式参数,每个虚参数之间用逗号隔开。( )


正确答案:对

第6题:

要限制宏操作的范围,可以在创建宏时定义( )。

A)宏操作对象

B)宏操作参数

C)宏条件表达式

D)宏操作备注


正确答案:C
本题考查宏操作的知识。如果只希望满足指定条件执行宏的一个或多个操作也就是限制宏操作的范围,可以在创建宏时定义条件表达式从而形成条件操作宏。

第7题:

在下列有关宏替换的叙述中,错误的是()

A.宏替换占用运行时间

B.宏替换只是字符替换

C.带参数的宏替换和函数等价

D.宏名有类型


正确答案:ACD

第8题:

( 11 )为了取代 C 中带参数的宏,在 C++ 中使用

A )重载函数

B )内联函数

C )递归函数

D )友元函数


正确答案:B

第9题:

为了取代C中带参数的宏,在C+十中使用

A.重载函数

B.内联函数

C.递归函数

D.友元函数


正确答案:B
解析:内联函数是inline,当程序中出现对该函数的调用时,编译器使用函数体中的代码插入到调用该函数的语句处,同时用实参代替形参。一般在程序运行时不再进行函数调用,代替了C语言中的宏定义。

第10题:

以下关于宏与函数的叙述中正确的是( )

A.使用函数或宏命令对C的源程序都役有影响

B.函数具有类型,宏不具有类型

C.函数调用和带参的宏调用都是将实参的值传给形参

D.使用函数比使用宏运行速度快


正确答案:B