0

我有一个kevent ev和一个int sock = socket(...)。当我这样做时ev.ident == sock,g++47 警告我warning: comparison between signed and unsigned integer expressions [-Wsign-compare]。我的方法有什么问题?

4

1 回答 1

2

如果您检查类型,它的类型uintptr_t是标准类型,足以容纳最大的整数或指针。这样它就可以用于任何可以轻松转换为整数的类型。并且来自FreeBSD kqueue 手册页

用于标识此事件的值。确切的解释由附加的过滤器决定,但通常是文件描述符。

所以我肯定会说这是设计使然。

如果您想摆脱警告,我建议您使用套接字:

ev.ident == static_cast<uintptr_t>(sock)
于 2013-05-23T18:58:16.933 回答