Как преодолеть ошибки, выданные mmsystem.h - PullRequest
0 голосов
/ 12 февраля 2009

Я не могу выбраться из этих простых ошибок, но было бы здорово, если бы кто-то мог ответить на эти ошибки. Я включил 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 ]

5 голосов
/ 12 февраля 2009

Чтобы расширить ответ Антона: windows.h #define s UINT будет unsigned int. Это определение макроса C, а не typedef. Если вы #include windows.h перед вами #include mmsystem.h, строка, на которую он указывает, будет читаться как:

typedef unsigned int MMVERSION;

Однако, если вы сделаете это неправильно, то UINT расширится до нуля, и эта строка станет:

typedef MMVERSION;

Это недопустимо в C ++, и вы получите ошибку разбора. Это именно то, что вы получаете.

3 голосов
/ 12 февраля 2009

Посмотрите mmsystem.h, строки 112 и 113:

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

Поэтому обязательно включите windows.h перед включением mmsystem.h, и, если это не поможет, попробуйте #define ing _WIN32 вручную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...