如果我尝试在 Windows 10 上的 TDM_GCC 下运行以下简单代码,
#include<stdio.h>
int main(){
double input;
setlinebuf(stdout);
printf("Enter Your Input -");
scanf("%If", &input);
printf("Entered name is %f", input);
return 0;
}
它编译(通过 gcc)时出现错误,说明 - 对“setlinebuf”的 undefined reference 。我正在使用 setlinebuf 使缓冲区仅按行进行缓冲。
最佳答案
setlinebuf 是一个需要 feature macro 的非标准函数。
功能宏打开了传统上在 Unix 等环境中使用但尚未达到 C 标准的功能集。
在代码文件的顶部添加以下行(在包含 stdio.h
之前)以打开 setlinebuf
的声明:
#define _BSD_SOURCE
请注意,可选功能的存在不是强制性的,因此它可能在您的平台上不可用。