簡體   English   中英

為什么write()返回ssize_t但是接受size_t的參數?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM