2015-11-13 81 views
2
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; 
} 

评估了面具emergenza.livello我打算用& LIV_EME_UNO进行检查。如果它不同于0,则表示掩码中的位为高;但是我得到错误“预期表达式”!='token“。'!='标记之前的预期表达式...我错在哪里?

回答

5

在你的代码中,Emergenza本质上是的数据类型,而不是变量。你需要有该类型的变量使用成员访问运算.

为了Emergenza一个变量,而不是数据类型做到这一点:

struct Emergenza { 
     int Tipo; 
     short Livello; 
} Emergenza; 

总之,去除typedef

+0

然后我可以检查[LIV_EME_UNO]只有一个变量,而不是一个结构体的字段?谢谢@sourav –

+0

@ F.Guerinoni你是什么意思?你需要一个'struct'变量来应用'''运算符,不是吗? –

+0

我使用'Emergenza.Livello | = LIV_EME_UNO',它的工作,但'(Emergenza.Livello | = LIV_EME_UNO)!= 0'不工作... –

相关问题