我尝试使用Windows 8 SDK编译此代码:
typedef struct {
enum { red, blue, green } eColor;
/* other params here */
} StMyStruct;
void Myfunction(StMyStruct *pst)
{
if (pst->eColor==StMyStruct.red) {
/* some code here */
}
}
但是如果pst-> eColor == StMyStruct.red ,我会在上收到此错误:
错误C2275:'StMyStruct':非法使用此类型作为表达式
知道怎么解决吗?
我使用Windows SDK 7成功编译此代码,仅在Windows 8 SDK中发生错误。
答案 0 :(得分:0)
尝试StMyStruct::red
。
另外,你不需要在C ++中开发C时主要使用的typedef
,你可以直接引用结构和类名。
答案 1 :(得分:0)
我不确定为什么这会编译SDK7,但我认为枚举值是StMyStruct
的静态成员所以应该通过StMyStruct::
来解决
typedef struct {
enum { red, blue, green } eColor;
} StMyStruct;
void Myfunction(StMyStruct *pst)
{
if (pst->eColor==StMyStruct::red) {
/* some code here */
}
}
使用GCC和Visual Studio为我编译干净。