是否可以使用函数的类似函数的宏版本来代替C标准库的函数版本?

问题描述 投票:0回答:1

是否可以确保使用类似于函数的宏版本的 putc 或 getc,而不是函数版本?

出于优化和运行时执行速度的目的

提前致谢!

c macros
1个回答
0
投票

C 标准规定标准库可以提供标准函数的宏版本,但不是要求这样做。因此任何给定的实现可能有也可能根本没有这样的宏版本。

如果确实有它们,那么您只需像平常一样写

getc(c, fp)
即可使用它们。这对于库来说没什么特别的,只是基本的 C:当遇到类似函数的宏的名称后跟
(
时,无论如何它都会被扩展;预处理器无法决定扩展某些此类宏调用而不是其他宏调用。

只有当您想要宏版本,并且特别想要函数版本时,您才必须做一些特殊的事情,例如

#undef getc
(getc)(c, fp)

请注意,即使有宏版本,也不能保证它确实能提高性能。在许多情况下,这可能会让情况变得更糟。

© www.soinside.com 2019 - 2024. All rights reserved.