title: Using g++ 4.6.1 I get many C++ compile errors when trying to include xaudio2.h
body: <p>I have a c++ Windows app that compiles fine using Visual Studio 2010. I also wanted to have the ability to compile it using MinGW (on a Windows7-64 PC). When g++ processes the xaudio2.h header file I get the errors listed below. Does anyone know of a fix aside from manually hacking the include file.</p>
  
  <pre><code>SDKS/DX/Include/xaudio2.h:51:1: error: pasting "5a508685" and "-" does not give
  a valid preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "a254" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "a254" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "4fba" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "4fba" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "9b" does not give a vali
  d preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "9b82" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:51:1: error: pasting "-" and "9a" does not give a vali
  d preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "db05ea35" and "-" does not give
  a valid preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "0329" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "0329" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "4d4b" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "4d4b" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "a5" does not give a vali
  d preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "a53a" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:52:1: error: pasting "-" and "6d" does not give a vali
  d preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "8bcf1f58" and "-" does not give
  a valid preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "9fe7" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "9fe7" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "4583" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "4583" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "8a" does not give a vali
  d preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "8ac6" and "-" does not give a va
  lid preprocessing token
  SDKS/DX/Include/xaudio2.h:53:1: error: pasting "-" and "e2" does not give a vali
  d preprocessing token
  In file included from common/system.h:71:0,
                   from game.cpp:1:
  SDKS/DX/Include/xaudio2.h:65:69: fatal error: sal.h: No such file or directory
  compilation terminated.
  </code></pre>
  
  <p>Here are the lines in the xaudio2.h:</p>
  
  <pre><code>DEFINE_CLSID(XAudio2, 5a508685, a254, 4fba, 9b, 82, 9a, 24, b0, 03, 06, af);
  DEFINE_CLSID(XAudio2_Debug, db05ea35, 0329, 4d4b, a5, 3a, 6d, ea, d0, 3d, 38, 52);
  DEFINE_IID(IXAudio2, 8bcf1f58, 9fe7, 4583, 8a, c6, e2, ad, c4, 65, c8, bb);
  </code></pre>
  
  <p>and it looks like the defines are in comdecl.h as:</p>
  
  <pre><code>#define DEFINE_CLSID(className, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
              class DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) className; \
              EXTERN_C const GUID CLSID_##className
  
  #define DEFINE_IID(interfaceName, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
              interface DECLSPEC_UUID_WRAPPER(l##-##w1##-##w2##-##b1##b2##-##b3##b4##b5##b6##b7##b8) interfaceName; \
              EXTERN_C const GUID IID_##interfaceName
  </code></pre>