-
1.宏是在编译之前编译的,即它们用宏体替换宏名称然后编译,而函数显然是在编译后和执行时调用的。 因此,宏占用编译时间,而函数在执行时需要时间。
这句话单独解释:
宏在编译前进行编译,即先将宏名称替换为宏体,然后进行编译""
说明:假设在编译前定义 **: define max len 10(10 是宏体,max len 是宏名称),也就是说,在预编译的时候,** 中 max len 出现的所有地方都会在下一次 **编译之前替换为 10,这个替换工作实际上是在编译之前进行的。
函数显然是在编译后调用的,当它们被执行时""
解释:这在实际调用函数调用时是显而易见的,因为只有在执行函数调用时,才能根据特定条件决定调用哪个函数。
因此,宏占用编译时间,而函数在执行时需要时间。 ""
解释:有了上面的解释,估计这句话就知道了,书的作者也会从他的句子中算作预编译的一部分。
2.宏参数不占用内存空间,因为它们只是替换字符串,而调用函数时的参数传递是特定变量之间的信息传递,而表单参数作为函数的局部变量,显然占用了内存。
同样,单独解释:
宏参数不占用内存空间,因为它们仅替换字符串""
解释:假设有一个宏定义定义 max(a, b) (a) >b) ?a) :
b) max(a, b) 出现在 ** 中(在初始定义之外)的所有位置都改为 (a) >b) ?a) :b),例如,如果 ** 中有类似 c = max(1, 3) 的语句,它将变为 c = (1) >3) ?
1) :3),这是直接替换,不产生中间变量,所以没有必要为它分配空间......
调用函数时的参数传递是特定变量之间的信息传递,而形式参数作为函数的局部变量,显然会占用内存。 "
说明:调用函数时,需要在堆栈上为每个形式参数分配空间,然后将参数的值复制到其中,并在函数内部使用此参数,函数结束后参数的空间会自动释放,这就是为什么参数的更改不能更改参数的值的原因。
-
宏是直接的文本替换,例如:
#define sum(a,b) a+b
当 sum(1,2) 在编译过程中被替换为 a+b 函数时,情况并非如此,并且在运行时会调用 int sum(int a, int b)。
例如,sum(1,1)*2;
这样的宏调用将替换为 1+1*2,从而得到 3
但是 sum(1,1)*2 没有这个问题,会先调用函数(实际在函数编译后执行指令)并返回 2 in 和 2 乘法。
-
[定义]:
宏(计算机术语):
在计算机科学中,宏是批处理的术语。 一般来说,宏是一种规则或模式,或语法替换,它描述了如何根据预定义的规则将特定输入(通常是字符串)转换为相应的输出(通常是字符串)。 这种替换发生在预编译时,称为宏。
功能(计算机术语):
为特定目的编写单独的存储小程序块也可以称为方法。
纠错]:宏就是宏,函数就是函数,这是两个不同的概念,一般我们只说宏。
-
s(x) 是带有参数的宏。 也就是说,这里的 s(x) 是 pt*x*x,其中 pt 等于。 然后 s(a+b) 将被替换为 pt*(a+b)*(a+b)。 即。
-
所谓宏,简单来说,就是为了后期编程的简单性,相当于给一个非常大的程序函数起了个名字,用的时候可以直接用到,非常方便!!
-
1. Macro(英文:macro)是批处理的术语。
2.计算机科学中的宏是一种抽象,它根据一系列预定义的规则替换了某种文本模式。 解释器或编译器在遇到宏时会自动替换此模式。 对于编程和翻译语言,宏在编译时出现,用于执行宏的工具通常称为宏。
3. 术语宏也经常用于许多类似的上下文中,它们源自宏的概念,其中包括键盘宏和宏语言。 绝大多数情况下,“宏”一词的使用意味着将一个小命令或操作转换为一系列指令。
-
这取决于你写什么。 与函数相比,宏具有明显的优势,因为它比函数更有效(且更快),因为宏可以直接位于源中,而调用函数需要额外的开销。 但是,宏通常很小,无法处理大型、复杂的结构,而函数可以。
另外,宏需要逐行,所以每次出现宏的时候,宏的**都会复制一次,这样你的程序就会变大,使用一个函数不会让你的程序变大。
一般来说,小的、可重复的段应该用宏代替,这将使程序运行得更快; 当任务复杂且需要多行实现时,或者当程序要求尽可能小时,应使用函数。
dim tarold
private sub worksheet_change(byval target as range) >>>More
你能说清楚吗,我不知道你的意思。 是否要在 main 函数中调用一个函数,然后不知道如何定义被调用的函数? 如果是这样的话,我可以告诉你。 >>>More