次のように宣言されたインターフェイスがあります。
#if defined _WIN32 || _WIN64
typedef CRITICAL_SECTION MutexHandle;
#else
typedef pthread_mutex_t MutexHandle;
#endif
class IMutex
{
public:
enum MutexState
{
UNLOCKED = 0,
LOCKED
};
virtual ~IMutex() { }
virtual int32_t Lock() = 0;
virtual int32_t Unlock() = 0;
virtual const MutexState& GetMutexState() const = 0;
virtual MutexHandle& GetMutexHandle() = 0;
};
問題は、CRITICAL_SECTION の定義に windows.h を含める必要があることです。
#define WIN32_LEAN_AND_MEAN
#include <Windows.h>
#undef WIN32_LEAN_AND_MEAN
しかし、これにより、ヘッダーに含まれる可能性のあるインターフェイスを使用している他のユーザーに問題が発生することはありませんか?
windows.h 全体をインクルードせずに typedef を宣言するにはどうすればよいですか?
ありがとう