我如何确保我将使用像“getc”这样的C标准库函数的函数版本而不是类似函数的宏版本?

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

我正在学习 C 中的函数与类似函数的宏

在阅读 C 标准时,我发现了这个:

通过将函数名称括在括号中,可以在本地抑制函数的任何宏定义,因为该名称后面不会跟着表示宏函数名称扩展的左括号。出于相同的语法原因,即使库函数也被定义为宏,也允许获取库函数的地址。185) 使用#undef 删除任何宏定义也将确保引用实际函数。

因此,根据此,如果我想确保 get 将是我的代码中的函数,我必须访问 stdio.h 头文件并将(如果是函数名称或宏名称则为 idk)括在括号或 #undef 中宏? 我的意思是: int (getc)(文件 *流); (或者这个?#define (getc)(...) ) 或这个: #undef getc

但是这一切都在 stdio.h 文件中吗?

或者在我的代码中?

你能给我一个例子来说明如何确保在 C 中使用 getc 作为函数吗?

提前致谢!

c function macros stdio getc
1个回答
0
投票

getc
并不总是有这样的保证。如果您需要抑制重复的参数扩展,请使用
fgetc
代替。另外,要强制使用
fgetc
的函数版本:

#include <stdio.h>
#undef fgetc
© www.soinside.com 2019 - 2024. All rights reserved.