相关疑难解决方法(0)

C和C++中struct的区别

我试图将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.

这是C2061的MSDN文章.

初始化器可以用括号括起来.要避免此问题,请将声明符括在括号中或使其成为typedef.

当编译器将表达式检测为类模板参数时,也可能导致此错误; 使用typename告诉编译器它是一个类型.

将KEY_STATE更改为typedef结构仍会导致此错误,实际上会导致更多错误.没有免费的括号或太多括号中的东西,这是文章建议的另一件事.

c c++ windows winapi kmdf

15
推荐指数
4
解决办法
3100
查看次数

标签 统计

c ×1

c++ ×1

kmdf ×1

winapi ×1

windows ×1