title: CRITICAL_SECTION and avoiding including windows.h?
body: <p>I have an interface declared like this:</p>
  
  <pre><code>    #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&amp; GetMutexState() const = 0;
          virtual MutexHandle&amp; GetMutexHandle() = 0;
      };
  </code></pre>
  
  <p>The problem is, I need to include windows.h for CRITICAL_SECTION definition;</p>
  
  <pre><code>#define WIN32_LEAN_AND_MEAN
  #include &lt;Windows.h&gt;
  #undef WIN32_LEAN_AND_MEAN
  </code></pre>
  
  <p>but dosn't this cause possible header include problems with others using the interface?</p>
  
  <p>How can I declare my typedef without having to include the whole windows.h?</p>
  
  <p>Thanks</p>