C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了c – 为什么write()返回ssize_t但是接受size_t的参数?大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
编译调用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()的正确@L_674_3@是什么,也不会遇到符号转换后计数== -1的情况?是的,我知道它是未定义的行为)

解决方法

返回值是一个有符号类型,允许返回值-1表示失败.

http://linux.die.net/man/2/write开始:

大佬总结

以上是大佬教程为你收集整理的c – 为什么write()返回ssize_t但是接受size_t的参数?全部内容,希望文章能够帮你解决c – 为什么write()返回ssize_t但是接受size_t的参数?所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。