[英]conversion to ‘size_t’ from ‘int’ may change the sign of the result - GCC , C
[英]recvfrom: warning: conversion to ‘size_t’ from ‘ssize_t’ may change the sign of the result
如何修復gcc(Debian 4.9.2-10)4.9.2編譯器警告
警告:從'ssize_t'轉換為'size_t'可能會改變結果的符號[-Wsign-conversion] recv_len = recvfrom(my_socket,* buf,MESSAGE_MAX_LEN,0,(struct sockaddr *)&remote_addr,&addr_len);
碼:
int my_socket;
struct sockaddr_storage remote_addr;
socklen_t addr_len = sizeof(remote_addr);
void
socket_listen(
int (*callback )(),
char ** buf)
{
size_t recv_len;
...
*buf = malloc(MESSAGE_MAX_LEN);
recv_len = recvfrom(my_socket, *buf, MESSAGE_MAX_LEN, 0, (struct sockaddr *)&remote_addr, &addr_len);
...
}
顯而易見的解決方法:當然,請使用正確的類型:
const ssize_t recv_len = recvfrom(...);
已簽名,因為它需要能夠返回負值(-1)來指示錯誤,請參見手冊頁 :
這些調用返回接收到的字節數,如果發生錯誤,則返回-1。 當對等方執行有序關閉時,返回值將為0。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.