c – 为什么write()返回ssize_t但是接受size_t的参数?
发布时间:2020-12-16 10:01:31 所属栏目:百科 来源:网络整理
导读:编译调用write()的代码时收到警告 警告:有符号和无符号整数表达式之间的比较[-Wsign-compare] 这是write()的定义: ssize_t write(int fd,const void *buf,size_t count);RETURN VALUE On success,the number of bytes written is returned (zero indicates
编译调用write()的代码时收到警告
警告:有符号和无符号整数表达式之间的比较[-Wsign-compare] 这是write()的定义: ssize_t write(int fd,const void *buf,size_t count); RETURN VALUE On success,the number of bytes written is returned (zero indicates nothing was written). On error,-1 is returned,and errno is set appropriately. 这对我来说很奇怪.假设ssize_t是int,我最终写了一些大的东西(> 2GB).我不能只使用write()vs count的返回值的比较,可以吗? (编辑:也许我应该正确地写下我的问题:在没有得到警告的情况下使用write()的正确方法是什么,也不会遇到符号转换后计数== -1的情况?是的,我知道它是未定义的行为) 解决方法
返回值是一个有符号类型,允许返回值-1表示失败.
从http://linux.die.net/man/2/write开始:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |