c++ boost asio 隐藏全局声明警告

问题描述 投票:0回答:1

我在头文件中使用boost/asio.hpp, 我在asio中使用类的私有变量声明类(例如:boost::asio::ip::tcp::socket套接字),然后当我用这个头文件编译我的程序时,总是有关于阴影全局声明的警告警告(例如:警告:“互斥体”的声明遮蔽了全局声明)。

我的问题是我可以做什么来消除这些警告? (我使用 vscode 和 cmake 在 Windows 系统上构建项目)

相关文件 练习.h

#pragma once
#include <algorithm>
#include <string>
#include <functional>
#include <random>
#include <iostream>
#include <chrono>
#include <set>
#include <mutex>
#include <future>
#include <condition_variable>
#include <boost/asio.hpp>
#include <memory>
#include <vector>

namespace ch20 {
  class Test_boot_network final {
    private:
      
    public:
      void test_resolver();
      void test_async_resolver();
      void test_socket();
      void test_async_socket();
      std::string simu_request(std::string host, boost::asio::io_context& io_context);
  };

  struct Request {
    private:
      boost::asio::ip::tcp::resolver resolver;
      boost::asio::ip::tcp::socket socket;
      std::string req;
      std::string resp;
      const std::string host;

    public:
      explicit Request(boost::asio::io_context& io_context, std::string str);
      void resolution_handler(boost::system::error_code ec, const boost::asio::ip::tcp::resolver::results_type& results);
      void conn_handler(boost::system::error_code ec, const boost::asio::ip::tcp::endpoint& ep);
      void write_handler(boost::system::error_code ec, std::size_t trans);
      void read_handler(boost::system::error_code ec, std::size_t trans);
      const std::string& get_resp() const noexcept;
  };

  struct Test_server {
    private:
      void handle(boost::asio::ip::tcp::socket& socket);
    public:
      void start();
      void serve(boost::asio::ip::tcp::acceptor& acceptor);
      void async_run_srv();
  };

  struct Session : std::enable_shared_from_this<Session> {
    private:
      boost::asio::ip::tcp::socket socket;
      std::string msg;
    
    public:
      explicit Session(boost::asio::ip::tcp::socket s);
      void read();
      void write();
  };
}

练习.cpp

#include "exercise.h"
#include <boost/algorithm/string/case_conv.hpp>


  void ch20::Test_boot_network::test_resolver() {
    boost::asio::io_context io_context;
    boost::asio::ip::tcp::resolver resolver{ io_context };
    boost::system::error_code ec;
    for (auto&& result : resolver.resolve("www.google.com", "https", ec)) {
      std::cout << result.service_name() << " " 
                << result.host_name() << " " 
                << result.endpoint() << "\n";
    }

    if (ec) {
      std::cout << "Error code: " << ec << "\n";
    }
  }

  void ch20::Test_boot_network::test_async_resolver() {
    boost::asio::io_context io_context;
    boost::asio::ip::tcp::resolver resolver{ io_context };

    resolver.async_resolve("www.google.com", "http", [](boost::system::error_code ec, const auto& results) {
      if (ec) {
        std::cout << "Error code: " << ec << "\n";
        return;
      }

      for (auto&& result : results) {
        std::cout << result.service_name() << " " 
                  << result.host_name() << " " 
                  << result.endpoint() << "\n";
      }
    });

    io_context.run();
  }


  void ch20::Test_boot_network::test_socket() {
    boost::asio::io_context io_context;
    boost::asio::ip::tcp::resolver resolver{ io_context };
    boost::asio::ip::tcp::socket socket{ io_context };

    try {
      auto endpoints = resolver.resolve("www.google.com", "http");
      const auto connected_endpoint = boost::asio::connect(socket, endpoints);
      std::cout << connected_endpoint << "\n";

    } catch (boost::system::system_error& se) {
      std::cerr << "error: " << se.what() << "\n";
    }
  }

  void ch20::Test_boot_network::test_async_socket() {
    boost::asio::io_context io_context;
    boost::asio::ip::tcp::resolver resolver{ io_context };
    boost::asio::ip::tcp::socket socket{ io_context };
    boost::asio::async_connect(socket, 
                                resolver.resolve("www.google.com", "http"), 
                                [](boost::system::error_code ec, const boost::asio::ip::tcp::endpoint& endpoint) {
                                  if (ec) {
                                    std::cerr << "error code: " << ec << "\n";
                                    return;
                                  }

                                  std::cout << endpoint.address() << ":" << endpoint.port() << "\n";
                                });

    io_context.run();
  }

  std::string ch20::Test_boot_network::simu_request(std::string host, boost::asio::io_context& io_context) {
    std::stringstream req_stream;
    req_stream << "GET / HTTP/1.1\r\n" 
                  "Host: " << host << "\r\n" 
                  "Accept: text/html\r\n" 
                  "Accept-Language: en-us\r\n" 
                  "Accept-Encoding: identity\r\n" 
                  "Connection: close\r\n\r\n";

    const auto req = req_stream.str();
    boost::asio::ip::tcp::resolver resolver{ io_context };
    const auto endpoints = resolver.resolve(host, "http");
    boost::asio::ip::tcp::socket socket{ io_context };
    const auto connected_endpoint = boost::asio::connect(socket, endpoints);
    boost::asio::write(socket, boost::asio::buffer(req));
    std::string resp;
    boost::system::error_code ec;
    boost::asio::read(socket, boost::asio::dynamic_buffer(resp), ec);
    if (ec && ec.value() != 2) {
      throw boost::system::system_error{ ec };
    }

    return resp;
  }


  ch20::Request::Request(boost::asio::io_context& io_context, std::string h) : resolver{ io_context }, socket{ io_context }, host { std::move(h) } {
    std::stringstream req_stream;
    req_stream <<  "GET / HTTP/1.1\r\n" 
                    "Host: " << host << "\r\n" 
                    "Accept: text/html\r\n" 
                    "Accept-Language: en-us\r\n" 
                    "Accept-Encoding: identity\r\n" 
                    "Connection: close\r\n\r\n"
                    "User-Agent: force client\r\n\r\n";

    req = req_stream.str();
    resolver.async_resolve(this->host, "http", [this](boost::system::error_code ec, const boost::asio::ip::tcp::resolver::results_type& results) {
      resolution_handler(ec, results);
    });
  }
  void ch20::Request::resolution_handler(boost::system::error_code ec, const boost::asio::ip::tcp::resolver::results_type& results) {
    if (ec) {
      std::cerr << "Error resolving " << host << ": " << ec << "\n";
      return;
    }

    boost::asio::async_connect(socket, results, [this](boost::system::error_code ec, const boost::asio::ip::tcp::endpoint& endpoint) {
      conn_handler(ec, endpoint);
    });
  }
  void ch20::Request::conn_handler(boost::system::error_code ec, const boost::asio::ip::tcp::endpoint& ep) {
    if (ec) {
      std::cerr << "Error connecting to " << host << ": " << ec.message() << "\n";
      return;
    }

    boost::asio::async_write(socket, boost::asio::buffer(req), [this](boost::system::error_code ec, std::size_t trans) {
      write_handler(ec, trans);
    });
  }
  void ch20::Request::write_handler(boost::system::error_code ec, std::size_t trans) {
    if (ec) {
      std::cerr << "Error writing to " << host << ": " << ec.message() << "\n";
      return;
    } else if (req.size() != trans) {
      //send it again???
      boost::asio::async_write(socket, boost::asio::buffer(req), [this](boost::system::error_code ec, std::size_t trans) {
        write_handler(ec, trans);
      });
    } else {
      boost::asio::async_read(socket, boost::asio::dynamic_buffer(resp), [this](boost::system::error_code ec, std::size_t trans) {
        read_handler(ec, trans);
      });
    }
  }
  void ch20::Request::read_handler(boost::system::error_code ec, std::size_t trans) {
    // an end-of-file error (value 2)
    if (ec && ec.value() != 2) {
      std::cerr << "Error reading from " << host << ": " << ec.message() << "\n";
      return;
    }

    std::cout << "complete in reading handler\n";
  }
  const std::string& ch20::Request::get_resp() const noexcept {
    return resp;
  }

  void ch20::Test_server::handle(boost::asio::ip::tcp::socket& socket) {
    boost::system::error_code ec;
    std::string msg;

    do {
      boost::asio::read_until(socket, boost::asio::dynamic_buffer(msg), "\n");
      boost::algorithm::to_upper(msg);
      boost::asio::write(socket, boost::asio::buffer(msg), ec);

      if (msg == "\n") {
        return;
      }

      msg.clear();

    } while (!ec);
  }

  void ch20::Test_server::start() {
    try {
      boost::asio::io_context io_context;
      boost::asio::ip::tcp::acceptor acceptor{ io_context, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 9999) };

      while (true) {
        boost::asio::ip::tcp::socket socket{ io_context };
        acceptor.accept(socket);
        handle(socket);
      }

    } catch (std::exception& e) {
      std::cerr << "error while running test server: " << e.what() << "\n";
    }
  }

  void ch20::Test_server::async_run_srv() {
    try {
      boost::asio::io_context io_context;
      boost::asio::ip::tcp::acceptor acceptor { io_context, boost::asio::ip::tcp::endpoint(boost::asio::ip::tcp::v4(), 9998) };
      ch20::Test_server::serve(acceptor);
      io_context.run();

    } catch (std::exception& e) {
      std::cerr << e.what() << "\n";
    }
  }
  void ch20::Test_server::serve(boost::asio::ip::tcp::acceptor& acceptor) {
    acceptor.async_accept([&acceptor, this](boost::system::error_code ec, boost::asio::ip::tcp::socket socket) {
      ch20::Test_server::serve(acceptor);
      if (ec) {
        std::cout << "error in serve: " << ec.message() << "\n";
        return;
      }

      auto session = std::make_shared<Session>(std::move(socket));
      session->read();

    });
  }

  ch20::Session::Session(boost::asio::ip::tcp::socket skt) : socket { std::move(skt) } {}

  void ch20::Session::read() {
    boost::asio::async_read_until(socket, boost::asio::dynamic_buffer(msg), '\n', [self = shared_from_this()](boost::system::error_code ec, std::size_t len) {
      if (ec || self->msg == "\n") {
        std::cout << "async_read_until err: " << ec.message() << "\n";
        return;
      }

      boost::algorithm::to_upper(self->msg);
      self->write();
    });
  }

  void ch20::Session::write() {
    boost::asio::async_write(socket, boost::asio::buffer(msg), [self = shared_from_this()](boost::system::error_code ec, std::size_t len) {
      if (ec || self->msg == "\n") {
        std::cout << "async_write err: " << ec.message() << "\n";
        return;
      }

      self->msg.clear();

      //call read to start over!!
      self->read();
    });
  }
  

CMakeLists.txt

add_library(CH20_exercise exercise.cpp)
target_include_directories(CH20_exercise PUBLIC ${CMAKE_CURRENT_SOURCE_DIR})
target_link_libraries(CH20_exercise PUBLIC compiler_flags PRIVATE ws2_32 PRIVATE wsock32)

建立消息

[main] Building folder: test_project 
[build] Starting build
[proc] Executing command: D:\dev_extensions\CMake\bin\cmake.EXE --build d:/my_git/cpp_projects/test_project/build --config Debug --target all -j 14 --
[build] [  1%] Built target MathFunctions
[build] [  2%] Built target BoostUse
[build] [  3%] Built target CH20_exercise
[build] [  3%] Built target CH14_Q1
[build] [  4%] Built target CH14_Q2
[build] [  6%] Built target CH14_Q3
[build] [  6%] Built target CH15_Q1
[build] [  6%] Built target CH15_Q2
[build] [  6%] Built target CH15_Q3
[build] [  6%] Built target CH16_Q1
[build] [  6%] Built target CH16_Q2
[build] [  6%] Built target CH17_exercise
[build] [  6%] Built target CH18_exercise
[build] [  6%] Built target CH19_exercise
[build] [  7%] Building CXX object ch21/CMakeFiles/CH21_exercise.dir/exercise.cpp.obj
[build] [ 82%] Built target Catch2
[build] [ 83%] Building CXX object CMakeFiles/test_proj.dir/main.cpp.obj
[build] [ 85%] Built target Catch2WithMain
[build] [ 87%] Built target TestByCatch2
[build] [ 88%] Built target TestUtilities
[build] [ 89%] Built target TestContainers
[build] [ 91%] Built target TestIterators
[build] [ 92%] Built target Ch16Test
[build] [ 94%] Built target Ch17Test
[build] [ 95%] Built target Ch18Test
[build] [ 97%] Built target Ch19Test
[build] [ 98%] Built target Ch20Test
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_static_mutex.hpp:71,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/static_mutex.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_global.hpp:19,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/global.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/impl/system_executor.hpp:19,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/system_executor.hpp:671,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/associated_executor.hpp:24,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/any_completion_handler.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio.hpp:21,
[build]                  from D:\my_git\cpp_projects\test_project\ch21\exercise.h:12,
[build]                  from D:\my_git\cpp_projects\test_project\ch21\exercise.cpp:1:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_static_mutex.ipp: In member function 'int boost::asio::detail::win_static_mutex::do_init()':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_static_mutex.ipp:56:10: warning: declaration of 'mutex' shadows a global declaration [-Wshadow]
[build]    56 |   HANDLE mutex = ::CreateMutexW(0, TRUE, mutex_name);
[build]       |          ^~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/execution/blocking_adaptation.hpp:20,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/execution.hpp:22,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/any_completion_executor.hpp:22,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio.hpp:20:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/mutex.hpp:37:19: note: shadowed declaration is here
[build]    37 | typedef win_mutex mutex;
[build]       |                   ^~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_iocp_io_context.hpp:344,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/io_context.hpp:39,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/io_object_impl.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/basic_socket.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/basic_datagram_socket.hpp:20,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio.hpp:32:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_iocp_io_context.ipp: In member function 'void boost::asio::detail::win_iocp_io_context::do_add_timer_queue(boost::asio::detail::timer_queue_base&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_iocp_io_context.ipp:577:27: warning: declaration of 'thread_function' shadows a member of 'boost::asio::detail::win_iocp_io_context' [-Wshadow]
[build]   577 |     timer_thread_function thread_function = { this };
[build]       |                           ^~~~~~~~~~~~~~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_iocp_io_context.ipp:36:29: note: shadowed declaration is here
[build]    36 | struct win_iocp_io_context::thread_function
[build]       |                             ^~~~~~~~~~~~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/socket_ops.hpp:374,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/socket_holder.hpp:20,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_select_interrupter.ipp:27,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/socket_select_interrupter.hpp:84,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/select_interrupter.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/select_reactor.hpp:34,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_iocp_socket_service.hpp:34,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/basic_socket.hpp:35:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::recv1(boost::asio::detail::socket_type, void*, size_t, int, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:792:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]   792 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::recvfrom1(boost::asio::detail::socket_type, void*, size_t, int, void*, std::size_t*, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:1072:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]  1072 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::send1(boost::asio::detail::socket_type, const void*, size_t, int, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:1406:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]  1406 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::sendto1(boost::asio::detail::socket_type, const void*, size_t, int, const void*, std::size_t, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:1646:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]  1646 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/select_reactor.hpp:284:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/select_reactor.ipp: In static member function 'static void boost::asio::detail::select_reactor::restart_reactor::do_complete(void*, boost::asio::detail::operation*, const boost::system::error_code&, std::size_t)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/select_reactor.ipp:332:21: warning: declaration of 'reactor' shadows a global declaration [-Wshadow]
[build]   332 |     select_reactor* reactor = static_cast<restart_reactor*>(base)->reactor_;
[build]       |                     ^~~~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/scheduler.ipp:30,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/scheduler.hpp:240,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/system_context.hpp:19,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/impl/system_executor.hpp:21:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/reactor.hpp:39:22: note: shadowed declaration is here
[build]    39 | typedef null_reactor reactor;
[build]       |                      ^~~~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_static_mutex.hpp:71,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/static_mutex.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_global.hpp:19,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/global.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/impl/system_executor.hpp:19,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/system_executor.hpp:671,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/associated_executor.hpp:24,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/any_completion_handler.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio.hpp:21,
[build]                  from D:\my_git\cpp_projects\test_project\ch20/exercise.h:12,
[build]                  from D:\my_git\cpp_projects\test_project\main.cpp:14:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_static_mutex.ipp: In member function 'int boost::asio::detail::win_static_mutex::do_init()':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_static_mutex.ipp:56:10: warning: declaration of 'mutex' shadows a global declaration [-Wshadow]
[build]    56 |   HANDLE mutex = ::CreateMutexW(0, TRUE, mutex_name);
[build]       |          ^~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/execution/blocking_adaptation.hpp:20,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/execution.hpp:22,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/any_completion_executor.hpp:22,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio.hpp:20:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/mutex.hpp:37:19: note: shadowed declaration is here
[build]    37 | typedef win_mutex mutex;
[build]       |                   ^~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_iocp_io_context.hpp:344,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/io_context.hpp:39,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/io_object_impl.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/basic_socket.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/basic_datagram_socket.hpp:20,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio.hpp:32:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_iocp_io_context.ipp: In member function 'void boost::asio::detail::win_iocp_io_context::do_add_timer_queue(boost::asio::detail::timer_queue_base&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_iocp_io_context.ipp:577:27: warning: declaration of 'thread_function' shadows a member of 'boost::asio::detail::win_iocp_io_context' [-Wshadow]
[build]   577 |     timer_thread_function thread_function = { this };
[build]       |                           ^~~~~~~~~~~~~~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/win_iocp_io_context.ipp:36:29: note: shadowed declaration is here
[build]    36 | struct win_iocp_io_context::thread_function
[build]       |                             ^~~~~~~~~~~~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/socket_ops.hpp:374,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/socket_holder.hpp:20,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_select_interrupter.ipp:27,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/socket_select_interrupter.hpp:84,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/select_interrupter.hpp:23,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/select_reactor.hpp:34,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/win_iocp_socket_service.hpp:34,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/basic_socket.hpp:35:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::recv1(boost::asio::detail::socket_type, void*, size_t, int, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:792:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]   792 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::recvfrom1(boost::asio::detail::socket_type, void*, size_t, int, void*, std::size_t*, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:1072:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]  1072 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::send1(boost::asio::detail::socket_type, const void*, size_t, int, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:1406:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]  1406 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp: In function 'boost::asio::detail::signed_size_type boost::asio::detail::socket_ops::sendto1(boost::asio::detail::socket_type, const void*, size_t, int, const void*, std::size_t, boost::system::error_code&)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:1646:10: warning: declaration of 'buf' shadows a global declaration [-Wshadow]
[build]  1646 |   WSABUF buf;
[build]       |          ^~~
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/socket_ops.ipp:707:16: note: shadowed declaration is here
[build]   707 | typedef WSABUF buf;
[build]       |                ^~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/select_reactor.hpp:284:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/select_reactor.ipp: In static member function 'static void boost::asio::detail::select_reactor::restart_reactor::do_complete(void*, boost::asio::detail::operation*, const boost::system::error_code&, std::size_t)':
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/select_reactor.ipp:332:21: warning: declaration of 'reactor' shadows a global declaration [-Wshadow]
[build]   332 |     select_reactor* reactor = static_cast<restart_reactor*>(base)->reactor_;
[build]       |                     ^~~~~~~
[build] In file included from D:/dev_extensions/boost_1_84_0/boost/asio/detail/impl/scheduler.ipp:30,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/detail/scheduler.hpp:240,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/system_context.hpp:19,
[build]                  from D:/dev_extensions/boost_1_84_0/boost/asio/impl/system_executor.hpp:21:
[build] D:/dev_extensions/boost_1_84_0/boost/asio/detail/reactor.hpp:39:22: note: shadowed declaration is here
[build]    39 | typedef null_reactor reactor;
[build]       |                      ^~~~~~~
[build] [ 99%] Linking CXX static library libCH21_exercise.a
[build] [ 99%] Built target CH21_exercise
[build] [100%] Linking CXX executable test_proj.exe
[build] [100%] Built target test_proj
[driver] Build completed: 00:00:08.833
[build] Build finished with exit code 0
c++ boost asio
1个回答
0
投票

如果问题确实出在标头中——并且第 3 方库确实很烦人——你可以随时执行以下操作:

#if defined(_MSC_VER)
#  pragma warning(push)
#  pragma warning(disable : 28020)
#endif

#include "SomeHeader.hpp"

#if defined(_MSC_VER)
#  pragma warning(pop)
#endif

只需查看警告编号并禁用您需要为该标头禁用的警告编号即可。

© www.soinside.com 2019 - 2024. All rights reserved.