我在调用时遇到了Socket operation on non-socket
一些网络代码中的错误,connect
并花了很多时间试图找出导致它的原因。我终于发现以下代码行导致了问题:
if ((sockfd = socket( ai->ai_family, ai->ai_socktype, ai->ai_protocol) < 0)) {
看到问题了吗?这条线应该是这样的:
if ((sockfd = socket( ai->ai_family, ai->ai_socktype, ai->ai_protocol)) < 0) {
我不明白为什么第一行不正确的行不会产生警告。换句话说,不应该是一般形式:
if ( foo = bar() < baz ) do_something();
编译器看起来很奇怪,尤其是运行g++ -Wall -Wextra
?
如果不是,它至少不应该显示为 cppcheck 的“坏风格”,我也在编译过程中运行它吗?