Различия между структурами в C и C ++
Я пытаюсь преобразовать структуру C ++ в C, но получаю «необъявленный идентификатор»? Есть ли в 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, если это имеет какое-либо значение. Это в заголовочном файле, конечно. Я портирую драйвер C ++ WDM на WDF и C.
Инициализатор может быть заключен в круглые скобки. Чтобы избежать этой проблемы, заключите декларатор в круглые скобки или сделайте его typedef.
Эта ошибка также может быть вызвана тем, что компилятор обнаруживает выражение в качестве аргумента шаблона класса; используйте typename, чтобы сообщить компилятору, что это тип.
Изменение KEY_STATE на typedef struct все еще вызывает эту ошибку и на самом деле вызывает гораздо больше. В слишком многих скобках нет свободных скобок или чего-то другого, это еще одна вещь, о которой говорится в статье.