簡體   English   中英

套接字綁定()錯誤:二進制表達式的無效操作數

[英]Socket bind() error: invalid operands to binary expression

代碼:

 if (bind(sockfd, (sockaddr *) &addr, sizeof(addr)) == -1) {

錯誤:

fs_server.cpp:264:56: error: invalid operands to binary expression ('__bind<int &, sockaddr *,
      unsigned long>' and 'int')
    if (bind(sockfd, (sockaddr *) &addr, sizeof(addr)) == -1) {

當我使用 C++11 運行此代碼時,這有效,當我使用 C++ 17 在 Linux 上運行此代碼時,它也有效。當我使用 C++17 在 Mac OS 上運行它時,它不起作用。對我來說,錯誤似乎表明比較是在 function 本身和 -1 之間進行的。 我不確定為什么會這樣。 我的解釋有誤嗎?

您的代碼試圖調用 C++ std::bind() function,而不是套接字bind() function。這可能是由於using namespace std; 在你的代碼中聲明。

為確保調用正確的 function,您可以去掉using語句,或者將調用限定為使用全局命名空間中的 function:

if (::bind(sockfd, (sockaddr *) &addr, sizeof(addr)) == -1) {

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM