首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在C++中静默已签名/未签名警告的最小干扰方式是什么?

在C++中静默已签名/未签名警告的最小干扰方式是什么?
EN

Stack Overflow用户
提问于 2019-06-04 01:30:04
回答 2查看 144关注 0票数 0

我有一个socket通信程序。协议规定,任何写入错误都是致命的,因此应该关闭连接。我的I/O代码如下所示:

auto const toWrite = buf.size() * sizeof(buf[0]);
auto nWritten = ::write(fd, buf.data, toWrite);

if (toWrite != nWritten)
{
    closeTheSocket();
}

这段代码在布尔测试中给出了warning: comparison between signed and unsigned integer expressions

我理解对有符号和无符号进行更多/更少比较的坏处,但这在这里是不可避免的。::write系统调用的签名为

# ssize_t write(int fd,const void *buf,size_t count);

换句话说,我的toWrite变量是无符号的,返回的nWritten是有符号的(-1表示错误)。我不关心;除了完全传输以外的任何事情都会对连接造成致命的影响。另外,我不明白带符号/未带符号的(In)相等测试怎么可能是危险的。

我看过herehereherehere,但是所有的问题都是关于小于比较,答案都是“不要那样做”。

This question要求将警告静音,但大锤“静默所有已签名/未签名”比较是不可取的。

我应该如何以尽可能少的干扰来使这个警告静默?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56432029

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档