Próbuję przekonwertować strukturę C++ do C, ale wciąż otrzymuję "niezadeklarowany identyfikator"? Czy C++ ma inną składnię do odwoływania się do struktur?Różnice między strukturą C i 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
};
Używam zmienną typu KEY_STATE wewnątrz innej struktury:
typedef struct _DEVICE_EXTENSION
{
WDFDEVICE WdfDevice;
KEY_STATE kState;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
skutkuje błędu C2061: błąd składni: identyfikator 'KEY_STATE'
... na linii KEY_STATE kState; Buduję z kompilatorem WDK, jeśli to robi jakąkolwiek różnicę. Oczywiście jest to plik nagłówkowy. Piszę sterownik WDD C++ do WDF i C.
This is the MSDN article for C2061.
Inicjator może być ujęty w nawiasy. Aby uniknąć tego problemu, ułóż deklarator w nawiasach lub ustaw go jako typedef.
Ten błąd może również wystąpić, gdy kompilator wykryje wyrażenie jako argument szablonu klasy; użyj komendy type, aby poinformować kompilator, że jest to typ.
Zmiana KEY_STATE na typedef struct wciąż powoduje ten błąd i powoduje znacznie więcej. Nie ma wolnych nawiasów ani rzeczy w zbyt wielu nawiasach, to jest druga rzecz, którą sugeruje artykuł.
dziękuje Timbo, rozwiązał mój problem :) –