【发布时间】:2018-05-19 19:52:03
【问题描述】:
这是一个简单的 C 程序:
#include <stdio.h>
int main(void)
{
printf("Display something\n");
fflush stdout;
return 0;
}
使用 msys2 mingw-w64 gcc 版本 7.3.0 和选项 -Wall 编译,一切正常,就像第 5 行是 fflush(stdout);。
我试图用我自己的函数重现这样的调用,但我得到了完全预期的错误
src/main.c: In function 'int main(int, char**)':
src/main.c:5:18: error: expected ';' before 'parameter'
custom_function parameter;
^~~~~~~~~
那么,fflush 函数会发生什么?有人可以解释一下吗?你对其他 C 编译器有同样的行为吗?
【问题讨论】:
-
不,不:
fflush stdout,我在问它为什么有效。 -
与 fflush 是一个内置函数有关,甚至可能是一个宏
-
我无法在
linux上重现,可能是mingw的东西。 -
原则上,
flush后面不跟(映射到一个函数指针。但是,stdin如何映射为合法的延续还不是很明显。你看过 C 预处理器的输出吗? (gcc -E)?