What does this line of C/C++ preprocessor mean? <p>This is Line 519 of <code>WinNT.h</code> (BUILD Version: 0091)</p> <pre><code>#define DECLARE_HANDLE(name) struct name##__{int unused;}; typedef struct name##__ *name </code></pre> <p>Why do we need a pointer to an struct with a single int member with a weird name called <code>unused</code>?</p> <p>And will we ever need to use a line of code like this one?</p> <pre><code>HINSTANCE hInstance = new HINSTANCE__; </code></pre> <p>Overall declaring different data types with the same structures, doesn't make sense to me. What's the idea behind this?</p> <pre><code>DECLARE_HANDLE(HRGN); DECLARE_HANDLE(HRSRC); DECLARE_HANDLE(HSPRITE); DECLARE_HANDLE(HLSURF); DECLARE_HANDLE(HSTR); DECLARE_HANDLE(HTASK); DECLARE_HANDLE(HWINSTA); DECLARE_HANDLE(HKL); </code></pre>