防止“警告:隐式声明函数'setlinebuf'......”

时间:2016-11-09 21:09:14

标签: c gcc clang

Clang / LLVM和GCC都显示此警告。我知道必须包含标题才能使用许多函数,但stdio.h包含在文件的顶部。我在同一个标​​题中使用了其他函数(例如setbuf()),这些函数运行正常。删除标题包括导致错误和警告被抛出这些其他函数,如预期的那样。

我使用clang -MD -MF来显示包含的头文件,并选中/usr/include/stdio.h,其中包含setlinebuf()的原型。我在unix.h找到了一个在线参考,但这似乎不存在于我的系统中。

我正在使用Lubuntu 16.10 x86_64,Clang 3.8.1。

View source:包含在第1行,功能使用在第32行。

1 个答案:

答案 0 :(得分:4)

在之前加入此,包括stdio.h

#define _BSD_SOURCE

setlinebuf()不是标准C函数,因此默认情况下可能不会包含在stdio.h中。

但请注意,自{glidc 2.20}以来,_BSD_SOURCE已被弃用,并被_DEFAULT_SOURCE取代。