1

私は 2 つの lib jsoncpp と imap (lib c-client) を使用しています。

json cppには書き込み機能があります。しかし、imap libには#define write safe_write 、 jsoncpp のマクロをオーバーライドするマクロがあります。両方のライブラリを同時に使用することはできません。どうすればこの競合を回避できますか?

4

3 に答える 3

3

imap から書き込みマクロを使用しないと仮定します。

#include "imap.h"
#undef write
#include "jsoncpp.h"
于 2011-03-16T16:20:32.573 に答える
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

于 2011-03-16T16:27:23.383 に答える
1

#undefヘッダーにアクセスでき、lib または dll を使用している限り、マクロを使用しない限り、アクセスできるはずです。

于 2011-03-16T16:13:51.003 に答える