1

我正在尝试使用 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++ 中一定是非常常见的问题,有人可以帮我解决这个问题。

提前致谢。

4

0 回答 0