I have the following (working) code in an existing code base, used in include file that is shared between C and C++, compiling on MSVC (2010) and Windows DDK:
Both have the same meaning. Both of these two forms are valid:
typedef typedef
You can typedef the above struct in either ways:
typedef
struct X { USHORT x; }typedef X, *PX; // typedef
or
typedef struct { USHORT x; } X, *PX; // typedef