如果我尝试在 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

请注意,可选功能的存在不是强制性的,因此它可能在您的平台上不可用。

10-08 20:27