我试图将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
};
Run Code Online (Sandbox Code Playgroud)
我在另一个结构中使用KEY_STATE类型的变量:
typedef struct _DEVICE_EXTENSION
{
WDFDEVICE WdfDevice;
KEY_STATE kState;
} DEVICE_EXTENSION, *PDEVICE_EXTENSION;
Run Code Online (Sandbox Code Playgroud)
导致 错误C2061:语法错误:标识符'KEY_STATE'
...在KEY_STATE kState线上; 我正在使用WDK编译器构建,如果这有任何区别.这当然是在头文件中.我正在将C++ WDM驱动程序移植到WDF和C.
初始化器可以用括号括起来.要避免此问题,请将声明符括在括号中或使其成为typedef.
当编译器将表达式检测为类模板参数时,也可能导致此错误; 使用typename告诉编译器它是一个类型.
将KEY_STATE更改为typedef结构仍会导致此错误,实际上会导致更多错误.没有免费的括号或太多括号中的东西,这是文章建议的另一件事.