我想將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.
This is the MSDN article for C2061。
初始值設定項可以用括號括起來。爲了避免這個問題,可以將聲明符括在括號中,或者將其定義爲typedef。
當編譯器檢測到表達式作爲類模板參數時,也可能導致此錯誤;使用typename來告訴編譯器它是一個類型。
將KEY_STATE更改爲typedef結構仍導致此錯誤,實際上會導致更多。在太多的括號中沒有可用的括號或內容,這是該文章建議的另一件事。
感謝北京天寶,解決我的問題:) – 2009-09-29 16:35:17