是否可以确保使用类似于函数的宏版本的 putc 或 getc,而不是函数版本?
出于优化和运行时执行速度的目的
提前致谢!
C 标准规定标准库可以提供标准函数的宏版本,但不是要求这样做。因此任何给定的实现可能有也可能根本没有这样的宏版本。
如果确实有它们,那么您只需像平常一样写
getc(c, fp)
即可使用它们。这对于库来说没什么特别的,只是基本的 C:当遇到类似函数的宏的名称后跟 (
时,无论如何它都会被扩展;预处理器无法决定扩展某些此类宏调用而不是其他宏调用。
只有当您不想要宏版本,并且特别想要函数版本时,您才必须做一些特殊的事情,例如
#undef getc
或(getc)(c, fp)
。
请注意,即使有宏版本,也不能保证它确实能提高性能。在许多情况下,这可能会让情况变得更糟。