我在K&R的第90页上读到,getchar通常被定义为宏。
那么,为什么这段代码真的可以工作:
#include <stdio.h>
#undef getchar
int main()
{
char c;
c= getchar();
printf("%c\n",c);
return 0;
}发布于 2017-11-28 17:40:14
不,C标准将getchar()定义为一个函数。请参阅C11,第7.21.7.6章,getchar函数。它是在<stdio.h>头文件中原型化的。
任何实现,如果选择将其定义为宏,则仅限于该实现。需要注意的是,这不是不符合项。来自第7.1.4章(重点是我的)
在标头中声明的任何函数都可以作为在标头
中定义的类似函数的宏额外实现
https://stackoverflow.com/questions/47528190
复制相似问题