首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >C和C++中结构的区别

C和C++中结构的区别
EN

Stack Overflow用户
提问于 2009-09-29 13:59:50
回答 5查看 3.2K关注 0票数 15

我正在尝试将一个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仍然会导致此错误,而且实际上会导致更多错误。没有空括号或有太多括号的东西,这是文章建议的另一件事。

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1492735

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档