加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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开始:

On success,the number of bytes written is returned (zero indicates nothing was written). On error,and errno is set appropriately.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读