我有kevent ev
和int sock = socket(...)
。当我ev.ident == sock
时,g ++ 47警告我warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
。我的方法有什么问题?
答案 0 :(得分:2)
如果检查类型,它的类型为uintptr_t
,这是一个足以容纳最大整数或指针的标准类型。这样它可以用于任何类型的类型,可以很容易地作为整数。并从FreeBSD kqueue manual page:
用于识别此事件的值。确切的解释由附加的过滤器确定,但通常是文件描述符。
所以我肯定会说它是设计的。
如果你想摆脱警告,我建议你施展插座:
ev.ident == static_cast<uintptr_t>(sock)