QQ登录

只需一步,快速开始

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 975|回复: 3

调用setbuffer()函数

[复制链接]
发表于 2004-6-29 13:52:08 | 显示全部楼层 |阅读模式
[code:1]
......
....

#ifdef  __USE_BSD
/* If BUF is NULL, make STREAM unbuffered.
   Else make it use SIZE bytes of BUF for buffering.  */
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
                       size_t __size) __THROW;

/* Make STREAM line-buffered.  */
extern void setlinebuf (FILE *__stream) __THROW;
#endif


........
.......

[/code:1]

如上是我在linux 9   /usr/include/stdio.h 里复制的一段代码,当我用程序调用setbuffer() 函数时(程序如下:)

[code:1]

#include <stdio.h>
#include <stdlib.h>

int main(void)
{
  char buf[1024];
  FILE *fp;
  if((fp=fopen("setbuf","wb+"))==NULL){
    perror("fopen");
    exit(EXIT_FAILURE);
  }
  setbuffer(fp,buf,1024);
  fclose(fp);
  exit(EXIT_SUCCESS);
}

[/code:1]



用gcc -Wall -ggdb -o test test.c 编译得到下面警告:

test.c: In function `main':
test.c:13: warning: implicit declaration of function `setbuffer'

求助,我怎能才能正确调用 setbuffer()。

同样问题,有 #ifdef  __USE_BSD  .................#endif   包含的函数我用都编不过

有劳各位

发表于 2004-6-29 14:56:52 | 显示全部楼层
fc1没有这个现象。而且实际上你没定义bsd风格,所以这些应该会被忽略吧
回复

使用道具 举报

发表于 2004-7-14 17:43:18 | 显示全部楼层
我在fedora core 1 gcc 3.3.2  上编译没有警告阿
回复

使用道具 举报

发表于 2004-7-14 22:04:35 | 显示全部楼层
你试着将“#ifdef __USE_BSD .................#endif ”这段全注释掉再编译就应该知道跟它有无关系了。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

GMT+8, 2024-11-7 20:40 , Processed in 0.202516 second(s), 16 queries .

© 2021 Powered by Discuz! X3.5.

快速回复 返回顶部 返回列表