【发布时间】:2018-05-11 17:02:57
【问题描述】:
我在 K&R 第 90 页读到 getchar 通常被定义为宏。
那么,为什么这段代码真的有效:
#include <stdio.h>
#undef getchar
int main()
{
char c;
c= getchar();
printf("%c\n",c);
return 0;
}
【问题讨论】:
-
所以,显然不是。
-
许多标准库函数也定义为宏。
-
因为getchar是一个libc函数
-
尝试使用调试器进入
getchar。您或许可以从中得到答案(即使调试器将您带入反汇编代码)。 -
@goodvibration 即使
getchar被定义为它可能被内联的函数。因此,单步调试调试器并没有告诉他任何事情。
标签: c function macros getchar kernighan-and-ritchie