Estoy intentando convertir una estructura de C++ en C, pero sigo obteniendo el "identificador no declarado"? ¿Tiene C++ una sintaxis diferente para referirse a las estructuras?Diferencias entre struct en C y 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
};
estoy usando una variable de tipo KEY_STATE dentro de otra estructura:
typedef struct _DEVICE_EXTENSION
{
WDFDEVICE WdfDevice;
KEY_STATE kState;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
resultados en error C2061: error de sintaxis: identificador 'KEY_STATE'
... en la línea KEY_STATE kState; Estoy compilando con el compilador WDK si eso hace alguna diferencia. Esto está en un archivo de encabezado, por supuesto. Estoy portando el controlador C++ WDM a WDF y C.
This is the MSDN article for C2061.
Un inicializador puede ir entre paréntesis. Para evitar este problema, encierre el declarador entre paréntesis o conviértalo en un typedef.
Este error también puede deberse a que el compilador detecta una expresión como un argumento de plantilla de clase; use typename para decirle al compilador que es un tipo.
Cambiar KEY_STATE a typedef struct todavía causa este error y en realidad causa mucho más. No hay paréntesis gratuitos o cosas en demasiados paréntesis, esa es la otra cosa que sugiere el artículo.
gracias Timbo, solucionó mi problema :) –