使用第三方c ++库时避免宏中的冲突

时间:2016-01-06 22:20:18

标签: c++ macros typedef casablanca

我正在尝试使用Casablanca,http服务器。为此,我需要包含来自Casablanca的头文件,其中包含很少的宏和typedef导致我的项目出现问题。

所以我的文件看起来像这样。

simplehttpserver.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 ++中一定是非常常见的问题,请有人帮我解决这个问题。

提前谢谢。

0 个答案:

没有答案