Я столкнулся с ошибкой 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, который я также запускаю как часть моей компиляции?