我正在尝试将一个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'
...on这行KEY_STATE kState;我正在用WDK编译器构建,如果这有什么不同的话。这当然是在一个头文件中。我正在将C++的WDM驱动程序移植到WDF和C。
This is the MSDN article for C2061。
初始化器可以用括号括起来。若要避免此问题,请将声明符括在圆括号中或将其设置为类型定义。
当编译器检测到表达式作为类模板参数时,也可能导致此错误;使用typename告诉编译器它是一个类型。
将KEY_STATE更改为typedef struct仍然会导致此错误,而且实际上会导致更多错误。没有空括号或有太多括号的东西,这是文章建议的另一件事。
https://stackoverflow.com/questions/1492735
复制相似问题