[英]Why write() returns ssize_t but takes a parameter of size_t?
編譯調用write()
代碼時收到警告
warning: comparison between signed and unsigned integer expressions [-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的情況?是的,我知道它是未定義的行為)
返回值是一個有signed
類型,允許返回值-1
表示失敗。
來自http://linux.die.net/man/2/write :
成功時,返回寫入的字節數(零表示沒有寫入)。 出錯時,返回-1,並正確設置errno 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.