我正在尝试将 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。
初始化器可以用括号括起来。为避免此问题,请将声明符括在括号中或使其成为 typedef。
当编译器将表达式检测为类模板参数时,也可能会导致此错误;使用 typename 告诉编译器它是一个类型。
将 KEY_STATE 更改为 typedef struct 仍然会导致此错误,实际上会导致更多错误。没有免费的括号或太多括号中的东西,这是文章建议的另一件事。