windows 如何克服 mmsystem.h 引发的错误
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/540337/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to Overcome Errors Thrown by mmsystem.h
提问by Anton Gogolev
I am not able to get out of these simple bugs, but would be great full if some one could answer to weed out from these errors. I included windows.h and some other necessary headers but couldn't able get out of it.
我无法摆脱这些简单的错误,但如果有人能回答从这些错误中剔除,那就太好了。我包含了 windows.h 和其他一些必要的标题,但无法摆脱它。
Snippet of errors:
错误片段:
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
Thanks In Advance
提前致谢
回答by Max Lybbert
To expand on Anton's answer: windows.h #define
s UINT
to be unsigned int
. That's a C macro define, not a typedef
. If you #include windows.h
before you #include mmsystem.h
the line he points to will be read as:
扩展安东的答案: windows.h #define
s UINT
to be unsigned int
。那是一个 C 宏定义,而不是一个typedef
. 如果你#include windows.h
在你之前#include mmsystem.h
,他指向的那条线将被读作:
typedef unsigned int MMVERSION;
However, if you do it the wrong way 'round, then UINT will expand to nothing, and that line will become:
但是,如果您以错误的方式进行操作,则 UINT 将扩展为无,该行将变为:
typedef MMVERSION;
That isn't valid C++ and you will get a parse error. Which is exactly what you're getting.
这不是有效的 C++,你会得到一个解析错误。这正是你得到的。
回答by Anton Gogolev
Look in mmsystem.h
, lines 112 and 113:
查看mmsystem.h
第 112 和 113 行:
#ifdef _WIN32
typedef UINT MMVERSION; /* major (high byte), minor (low byte) */
So be sure to include windows.h
befor including mmsystem.h
, and if it does not help, try #define
ing _WIN32
manually.
所以一定要包括windows.h
befor包括mmsystem.h
,如果没有帮助,尝试#define
荷兰国际集团_WIN32
手动。