'!=' 标记之前的预期表达式...我哪里错了?

expected expression before '!=' token... Where I'm wrong?

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不同,则表示掩码中的位为高;但我收到错误 "expected expression before '!=' token".

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

要使 Emergenza 成为变量而不是数据类型,请执行以下操作:

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

总而言之,删除 typedef