|
|
# cat Read.c
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#define MAXLINE 8192
ssize_t
read(int fd, void * buf,ssize_t n)
{
if((n=read(fd,buf,MAXLINE)) != n ) {
printf("read error\n");
return(-1);
}
return(n);
}
/mnt/d/err_pro# gcc -c Read.c
Read.c:7: conflicting types for `read'
/usr/include/unistd.h:310: previous declaration of `read'
/mnt/d/err_pro# | |
| /usr/include/unistd.h
里有个函数是read()
自己查查。。你自己定义的函数(read())改名为read_new()吧。。。。 谢谢qing!!! 我太粗心了,函数的命也叫read()了,应该换个新的名字 |
| 怎么能这么写呢? if((n=read(fd,buf,MAXLINE)) != n ) { 应该定义一个局部变量 请问怎么定局部变量呢?? if((n=read(fd,buf,MAXLINE)) != n ) 应该是!=MAXLINE吧? 想想都不对,应该是 <0 ,一时没注意。。 我不知道你到底要实现什么功能,根据你写的函数,似乎下面这个就可以: 代码: ssize_t
myread(int fd, void * buf,ssize_t n)
{
if(read(fd, buf, n) != n){
printf("read error\n");
return(-1);
}
return(n);
} |
|
| 引用: 最初由 libinary 发表 我不知道你到底要实现什么功能,根据你写的函数,似乎下面这个就可以:
代码: ssize_t
myread(int fd, void * buf,ssize_t n)
{
if(read(fd, buf, n) != n){
printf("read error\n");
return(-1);
}
return(n);
} |
|
谢谢!!好象写得复杂了。。我的目的是想没个库函数都写个这样有出错的自定义函数。。用的时候就不需要检查错误了。。但Read()觉得太简单了。。 看unp.h 里面的包裹函数错误处理做的很好啊 |
| |
| |
|
|