我正在尝试使用 Casablanca,http 服务器。为此,我需要包含来自 Casablanca 的头文件,其中包含很少会导致我的项目出现问题的宏和 typedef。
所以我的文件看起来像这样。
简单的httpserver.h
#include "cpprest/json.h"
#include "cpprest/http_listener.h"
#include "cpprest/uri.h"
#include "cpprest/asyncrt_utils.h"
SimpleHttpServer {
SimpleHttpServer(utility::string_t, std::function<void(http_request)> &request_handler);
void OnInitialize();
void StartServer();
void StopServer();
private:
std::unique_ptr<http_listener> m_listenerUptr;
// Handlers
std::function<void(http::http_request)> m_all_requests;
pplx::task<void> open() { return m_listenerUptr->open(); }
pplx::task<void> close() { return m_listenerUptr->close(); }
// SimpleHttpServer http_server_;
utility::string_t address_;
}
在我想要包含它的原始代码中说。
#include "simplehttpserver.h"
这会导致所有 Casablanca 头文件预编译到我的项目中,这与我的项目中的宏和 typedef 冲突。例如 __declspec
我不想更改我的宏,因为这将是很多代码更改。而且我不想更改 Casablanca 头文件,因为这也会导致长期维护开销。
我敢肯定,这在 C++ 中一定是非常常见的问题,有人可以帮我解决这个问题。
提前致谢。