C 在';之前应为表达式=';代币其中我';我错了?
在评估了maskC 在';之前应为表达式=';代币其中我';我错了?,c,struct,typedef,C,Struct,Typedef,在评估了maskemergencza.livelo之后,我将使用和LIV\u EME\u UNO检查它。如果它不同于0,这意味着掩码中的位较高;但是我得到了错误“expected expression before'!=“token”。在您的代码中,emergencza本质上是一个数据类型,而不是一个变量。您需要具有该类型的变量才能使用成员访问操作符 要使emergencza成为变量而不是数据类型,请执行以下操作: enum LIVELLI_EMERGENZA { LIV_EME_UNO
emergencza.livelo
之后,我将使用和LIV\u EME\u UNO
检查它。如果它不同于0
,这意味着掩码中的位较高;但是我得到了错误“expected expression before'!=“token”。在您的代码中,emergencza
本质上是一个数据类型,而不是一个变量。您需要具有该类型的变量才能使用成员访问操作符
要使emergencza
成为变量而不是数据类型,请执行以下操作:
enum LIVELLI_EMERGENZA {
LIV_EME_UNO = 0x0001,
LIV_EME_DUE = 0x0002,
LIV_EME_TRE = 0x0003
};
typedef struct Emergenza {
int Tipo;
short Livello;
} Emergenza;
void TrovaEmergenze()
{
if(INPUT_GET(IN_FUNGO_EMERGENZA)) {
Emergenza.Tipo |= EME_FUNGO_PREMUTO;
Emergenza.Livello |= LIV_EME_UNO;
}
if((INPUT_GET(IN_FC_CARTER_LAMA))){
Emergenza.Tipo |= EME_CARTER_LAMA_APERTO;
Emergenza.Livello |= LIV_EME_DUE;
}
}
char EmeLivello1()
{
if((Emergenza.Livello & LIV_EME_UNO) != 0)
return 1;
return 0;
}
总之,删除
typedef
,然后我可以只使用变量而不使用结构的字段检查[LIV_EME_UNO]?谢谢@sourav@F.Guerinoni什么意思?你需要有一个struct
变量来应用
操作符,不是吗?我使用emergeza.Livello |=LIV_EME_UNO
,这是可行的,但是(emergeza.Livello |=LIV_EME_UNO)0
无效…@SouravGhosh:typedef使用的语法还声明了一个名为emergeza的变量。@DavidCullen谢谢,我如何声明我的结构
?
struct Emergenza {
int Tipo;
short Livello;
} Emergenza;