为什么开发人员会使用宏?

时间:2009-11-19 00:05:23

标签: macros

  • 为什么开发人员会使用macro
  • 使用它们有什么优点和缺点?
  • 我在哪里可以找到一些资源以及如何使用它们?

11 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:6)

宏是一个相当广泛的术语。例如,在C ++中,存在诸如these之类的宏。从软件开发的角度来看,它们允许您使用这些便利宏(例如__FILE__)来执行某些操作,例如获取当前源文件的名称等。

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

答案 2 :(得分:3)

宏存在的原因很多

  • 提供方便的速记
  • 提供间接位置,其中定义了某些设置或其他设置,从而无需在引用宏的每个位置修改此值
  • 提供抽象级别(我猜有点像非宏函数)

答案 3 :(得分:1)

由于语言限制,当没有其他功能可行时,宏对DRY(不要重复自己)有好处。现代语言往往足够灵活,很少需要宏。例如,能够将函数作为参数传递,而泛型有助于减少对宏的需求。

优点:

     
  • 公共代码保存在一个地方。  
  • 剩下的代码不那么混乱,因此更具可读性。

缺点:

  • 当宏在编译时导致语法错误时,通常很难理解错误消息。
  • 在运行时生成的堆栈跟踪中的行号可能会产生误导。
  • 宏有时会产生意外结果 - MAX(x ++,y)可能会增加x的值两次。

答案 4 :(得分:1)

宏是批量命令。 它们通常被最终用户用于自动执行重复性任务。

示例宏可以包括:

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

通常,宏旨在供最终用户直接使用(与例如面向开发人员的API相比)。

答案 5 :(得分:1)

宏是用户友好的代码。它们通常经验证实。因此,他们节省了很多时间。

答案 6 :(得分:1)

没有定义宏是什么,就像大多数人已经做过的那样,我只会列出一些优点/缺点(绝不是详尽无遗的)

<强>优点:
- 节省时间(快捷方式的目的)
- 符合人体工程学(主观 - 较少打字但通常需要一次按2个或更多键)
- 让一个极客想成为极客 -

<强>缺点:
- 如果有太多的宏,可能会很难管理 - 可能与现有应用程序/系统快捷方式发生冲突并导致混淆 - 某人使用同一台计算机/应用程序的潜在危险

答案 7 :(得分:1)

优点:

Resharper's shortcuts可能被视为一些宏,在某些情况下可用于减少执行某些操作的击键次数。同样适用于IntelliSense

缺点:

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

答案 8 :(得分:1)

可以在Practical Common Lisp第7章和第8章中找到对Lisp宏的一个很好的介绍。

答案 9 :(得分:0)

“宏”可以用作模板引擎,以便最大限度地减少重复性任务,例如剪切/粘贴。

答案 10 :(得分:0)

当内联代码比调用函数更快时,我使用宏。除了DSP编程之外,这对我来说现在很少。我一直用汇编语言和C语言使用宏。