【发布时间】:2017-06-01 01:13:34
【问题描述】:
尽管如此,宏还是很有价值的。一个实际的例子来自
<stdio.h>,其中getchar和putchar通常被定义为宏 避免每个字符的函数调用的运行时开销 处理。<ctype.h>中的函数通常也实现为 宏。
这是书上的。我不明白为什么 MACROS 有助于减少开销。他们所做的只是在编译过程中增加了一个步骤。
【问题讨论】:
-
是的,我知道。开销呢?它如何减少程序的开销? MACROS 的调用方式与其他程序不同吗?是分开编译的吗?
-
源代码中直接替换宏,所以运行时没有函数调用。与编写 K&R 时相比,如今编译器可能会更多地自动内联函数,这使得这一点变得不那么重要了。这是不从过时(如果出色)书籍中学习的原因之一。
-
为了扩展 David 所说的,每个函数调用都需要一些时间。不过,我仍然建议阅读 K&R。 C 自 1990 年以来一直在发展,但并没有那么。读完这本书后,了解变化并不难。
-
@yellowantphil 非常感谢!是否有其他资源可以了解 C 的最新变化和编程技术?
-
我读过 K&R 几遍,它过时了,但没那么多。他们所说的开销的意思是当你调用一个函数是 C 时,系统会使用额外的资源。它会复制您发送给函数的任何内容,并将其放入堆栈中。当您使用宏时,它只是复制宏中的任何内容。所以没有使用额外的资源。今天确实如此,就像他们在那里写书时一样。我读了第二版。第一个更过时。
标签: c compilation macros