У меня возникают проблемы при компиляции некоторого кода, который использует Direct Input 8. Все остальное в моем коде работает нормально, но когда компилируется входной код, появляется эта последовательность предупреждений и ошибок.
1> Input.cpp
1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5826): warning C4091: 'typedef ' : ignored on left of 'tagINPUT' when no variable is declared
1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5826): error C2143: syntax error : missing ';' before ','
1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5826): error C2059: syntax error : ','
1>c:\program files (x86)\windows kits\8.0\include\um\winuser.h(5833): error C2061: syntax error : identifier 'LPINPUT'
Это в Visual Studio 2012. Есть идеи, что может быть причиной этого? Я проверил оставшуюся часть кода на отсутствие точек с запятой и запятых, но ничего не смог найти. У кого-нибудь из вас была подобная проблема раньше?
вот окружающие строки в winuser.h
#define INPUT_MOUSE 0
#define INPUT_KEYBOARD 1
#define INPUT_HARDWARE 2
typedef struct tagINPUT {
DWORD type;
union
{
MOUSEINPUT mi;
KEYBDINPUT ki;
HARDWAREINPUT hi;
};
line 5826 } INPUT, *PINPUT, FAR* LPINPUT;
Текущие включения в Input.H являются
#include<dinput.h>
#include"MemUtils.h"
и Input.cpp включает только Input.H
Я использовал некоторые макросы в моем файле input.h.
#ifndef INPUT
#define INPUT
Это была критическая и глупая ошибка, которая привела к этой проблеме. Извините за все это.