如何克服mmsystem.h引发的错误

时间:2009-02-12 07:03:49

标签: c++ windows visual-studio-2005

我无法摆脱这些简单的错误,但是如果有人可以回答这些错误中的杂草,那么它就会非常充实。我包括了windows.h和其他一些必要的标题但是无法摆脱它。

错误摘录:

error C2146: syntax error : missing ';' before identifier 'MMVERSION' 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C2143: syntax error : missing ';' before '*' 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C2146: syntax error : missing ';' before identifier 'ms' 
error C4430: missing type specifier - int assumed. Note: C++ does not support default-int error C4430: missing type specifier - int assumed. Note: C++ does not support default-int

提前致谢

2 个答案:

答案 0 :(得分:5)

要扩展Anton的答案:windows.h #define s UINTunsigned int。这是一个C宏定义,而不是typedef。如果您#include windows.h之前#include mmsystem.h他指向的行将被视为:

typedef unsigned int MMVERSION;

但是,如果以错误的方式执行此操作,那么UINT将扩展为空,并且该行将变为:

typedef MMVERSION;

这不是有效的C ++,你会得到一个解析错误。这正是你得到的。

答案 1 :(得分:3)

查看mmsystem.h第112和113行:

#ifdef _WIN32
typedef UINT        MMVERSION;  /* major (high byte), minor (low byte) */

因此,请务必在windows.h中添加mmsystem.h,如果不起作用,请手动#define _WIN32 {/ p}}。