Я пытаюсь преобразовать структуру С++ в C, но продолжать получать "необъявленный идентификатор"? Имеет ли С++ другой синтаксис для ссылки на структуры?
struct KEY_STATE
{
bool kSHIFT; //if the shift key is pressed
bool kCAPSLOCK; //if the caps lock key is pressed down
bool kCTRL; //if the control key is pressed down
bool kALT; //if the alt key is pressed down
};
Я использую переменную типа KEY_STATE внутри другой структуры:
typedef struct _DEVICE_EXTENSION
{
WDFDEVICE WdfDevice;
KEY_STATE kState;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
приводит к ошибке C2061: синтаксическая ошибка: идентификатор 'KEY_STATE'
... в строке KEY_STATE kState; Я создаю компилятор WDK, если это имеет значение. Конечно, это файл заголовка. Я портирую драйвер С++ WDM на WDF и C.
Инициализатор может быть заключен в круглые скобки. Чтобы избежать этой проблемы, вставьте объявление в круглые скобки или сделайте его typedef.
Эта ошибка также может быть вызвана, когда компилятор обнаруживает выражение как аргумент шаблона класса; используйте typename, чтобы сообщить компилятору, что это тип.
Изменение KEY_STATE в typedef struct по-прежнему вызывает эту ошибку и фактически вызывает намного больше. В скобках нет свободных скобок или вещей, это то, что предлагает статья.