Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Macros 开发人员为什么要使用宏? 为什么开发人员要使用一个新的应用程序 使用它们的优点和缺点是什么 我在哪里可以找到一些关于和如何使用它们的资源_Macros - Fatal编程技术网

Macros 开发人员为什么要使用宏? 为什么开发人员要使用一个新的应用程序 使用它们的优点和缺点是什么 我在哪里可以找到一些关于和如何使用它们的资源

Macros 开发人员为什么要使用宏? 为什么开发人员要使用一个新的应用程序 使用它们的优点和缺点是什么 我在哪里可以找到一些关于和如何使用它们的资源,macros,Macros,通常,宏是一条扩展为多条指令的指令。缩写,如果你愿意的话。宏存在的原因与缩写存在的原因相同;它们是一种速记。宏适用于DRY(不要重复自己的操作),因为语言限制,其他操作都不起作用。现代语言趋向于足够灵活,很少需要宏。例如,能够将函数作为参数和泛型传递有助于减少对宏的需要 优点: 通用代码保存在一个地方。 剩下的代码不那么凌乱,因此可读性更好。 缺点: 当宏在编译时导致语法错误时,通常很难理解错误消息。 运行时生成的stacktraces中的行号可能会产生误导。 宏有时会产生意外的结果-MA

通常,宏是一条扩展为多条指令的指令。缩写,如果你愿意的话。宏存在的原因与缩写存在的原因相同;它们是一种速记。

宏适用于DRY(不要重复自己的操作),因为语言限制,其他操作都不起作用。现代语言趋向于足够灵活,很少需要宏。例如,能够将函数作为参数和泛型传递有助于减少对宏的需要

优点:

  • 通用代码保存在一个地方。
  • 剩下的代码不那么凌乱,因此可读性更好。
缺点:

  • 当宏在编译时导致语法错误时,通常很难理解错误消息。
  • 运行时生成的stacktraces中的行号可能会产生误导。
  • 宏有时会产生意外的结果-MAX(x++,y)可能会将x的值增加两倍。
宏是一批批命令。 终端用户通常使用它们来自动化重复的任务

宏示例可能包括:

  • 替换文档中出现的某些文本
  • 对一组图像应用相同的过滤器
  • 下载一套网页

通常,宏是供最终用户直接使用的(与供开发人员使用的API不同)。

可以将“宏”用作模板引擎,以尽量减少重复任务,例如剪切/粘贴。

宏是一个相当宽泛的术语。例如,在C++中,有宏,例如。从软件开发的角度来看,它们允许您使用这些方便的宏(
\uuuuuu FILE\uuuuuu
)执行某些操作,例如获取当前源文件的名称等


还可以在编辑器中记录击键宏。例如,如果要编辑文件的每一行并用引号将其括起来,则可以记录一系列击键,然后将宏“保存”到单个键中。然后您可以按该键,该键将执行刚才为文件中每一行保存的所有击键。

宏的存在有很多原因

  • 提供方便的速记
  • 若要在定义某些设置或其他设置时提供间接寻址,请在引用宏的每个位置保存并修改此值
  • 提供一个抽象级别(我想有点像非宏函数)

宏是用户友好的代码。他们经常被经验所证实。因此,它们节省了大量时间。

没有定义宏是什么,正如大多数人已经做的那样,我只列出一些优点/缺点(并非详尽无遗)

优势:
-节省时间(快捷方式的用途)
-人体工程学(主观-无需打字,但通常需要一次按两个或多个键)
-让一个想成为极客的人感觉更极客

缺点:
-如果宏太多,管理起来可能会很繁琐
-可能与现有应用程序/系统快捷方式冲突并导致混淆
-使用同一台计算机/应用程序的潜在危险好处:

在某些情况下,可能将其视为宏,在某些情况下,可用于减少执行某些操作的按键次数。同样适用于使用

缺点:


如果开发人员几乎依赖于这样的工具,如果工具不可用或使用了足够的宏,他们不知道如何使用这些工具,那么它几乎会像另一种语言一样出现,因为80-90%的代码可能只是宏,我在以前的地方见过并使用过它,包括用于生成网页的自定义标记语言。

在第7章和第8章中可以找到有关Lisp宏的详细介绍。

当内联代码比调用函数快时,我使用宏。现在这对我来说几乎不重要了,除了DSP编程。我一直在汇编语言和C语言中使用宏。

即使在那时,我们大多数人都在使用编译器,可以使用与宏一样快的内联函数/方法可靠地生成代码。我提到这一点只是为了澄清,人们不会困惑地认为“宏更好,因为它们更快-我应该使用宏”,因为这只是有条件的正确,通常是错误的。我喜欢以两种方式运行性能测试,有时我很难判断编译器是否是内联的,因为这通常取决于编译器是否内联,即使你告诉它。但正如我所说,除了DSP或嵌入式应用程序外,它几乎不重要。注意:回答这个问题的人并不同意宏是什么:有些回答是“编写代码的代码”,有些回答是“其他人的应用程序有点自动化”。这个问题毫无意义,因为宏可以指很多不同的东西。