【问题标题】:How Macros in C help in reducing program overhead as stated in the book, The C Programming Language By Brian W. Kernighan and Dennis M. Ritchie?正如 Brian W. Kernighan 和 Dennis M. Ritchie 所著的 The C Programming Language 一书中所述,C 中的宏如何帮助减少程序开销?
【发布时间】:2017-06-01 01:13:34
【问题描述】:

尽管如此,宏还是很有价值的。一个实际的例子来自 <stdio.h>,其中getcharputchar 通常被定义为宏 避免每个字符的函数调用的运行时开销 处理。 <ctype.h> 中的函数通常也实现为 宏。

这是书上的。我不明白为什么 MACROS 有助于减少开销。他们所做的只是在编译过程中增加了一个步骤。

【问题讨论】:

  • 是的,我知道。开销呢?它如何减少程序的开销? MACROS 的调用方式与其他程序不同吗?是分开编译的吗?
  • 源代码中直接替换宏,所以运行时没有函数调用。与编写 K&R 时相比,如今编译器可能会更多地自动内联函数,这使得这一点变得不那么重要了。这是不从过时(如果出色)书籍中学习的原因之一。
  • 为了扩展 David 所说的,每个函数调用都需要一些时间。不过,我仍然建议阅读 K&R。 C 自 1990 年以来一直在发展,但并没有那么。读完这本书后,了解变化并不难。
  • @yellowantphil 非常感谢!是否有其他资源可以了解 C 的最新变化和编程技术?
  • 我读过 K&R 几遍,它过时了,但没那么多。他们所说的开销的意思是当你调用一个函数是 C 时,系统会使用额外的资源。它会复制您发送给函数的任何内容,并将其放入堆栈中。当您使用宏时,它只是复制宏中的任何内容。所以没有使用额外的资源。今天确实如此,就像他们在那里写书时一样。我读了第二版。第一个更过时。

标签: c compilation macros


【解决方案1】:

这里的宏只是一个旧版本的内联函数,它将函数体复制粘贴到每次使用中的过程自动化。好读:

https://en.wikipedia.org/wiki/Inline_function

【讨论】:

  • 我理解你提到函数内联的那一刻。非常感谢!!
猜你喜欢
  • 1970-01-01
  • 2021-09-19
  • 1970-01-01
  • 2021-12-02
  • 2020-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多