The Microsoft C++ compiler has a non-standard extension that allows you to declare a structure with no name as member of another structure or union. MMSystem.h takes advantage of this compiler extension.
When you compile under warning level 4, the compiler warns you when you use a non-standard extension. When you use the feature that treats warnings as errors, you get an error when you use a non-standard extension.
MMSystem.h is a header file for a Microsoft-supplied library, so if you want to find out if they plan to make MMSystem.h compilable under the settings you are using, you will need to take it up with them. One option is to post to the
MSDN newsgroups.
If you want to work around this problem
, you could turn off this particular warning before you include MMSystem.h and turn the warning back on after you include MMSystem.h. This looks like the following:
#pragma warning (push)
#pragma warning(disable:4201)
#include "mmsystem.h"
#pragma warning (pop)