我正在使用两个lib jsoncpp和imap(lib c-client)。
json cpp具有写入功能。
但在imap lib中他们有一些宏#define write safe_write
这是从jsoncpp覆盖一些宏。
我无法同时使用这两个库。
我怎样才能避免这种冲突?
答案 0 :(得分:3)
假设你没有使用来自imap的写宏:
#include "imap.h"
#undef write
#include "jsoncpp.h"
答案 1 :(得分:2)
最好的方法是将有问题的标题(此处为imap
)封装在“表现得更好”的标题中。
请注意,此#define
实际上是一个懒人内联函数。您需要在同一名称空间中标识safe_write
的所有声明并提供适当的重载。
// my_imap.h
#include "imap.h"
#undef write
inline void write(FILE* file, char* content, size_t size) {
safe_write(file, content, size);
}
// ...
然后加入my_imap.h
代替imap.h
。
答案 2 :(得分:1)
只要您可以访问标题并使用lib或dll,只要不使用宏,就可以#undef
它。