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 に「悪いスタイル」として表示されるべきではありませんか?