在'!='之前的预期表达令牌......我哪里错了?

时间:2015-11-13 21:30:32

标签: c struct typedef

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不同,则表示掩码中的位为高;但我得到错误"预期的表达式在'!='令牌"

1 个答案:

答案 0 :(得分:5)

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

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

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

总之,请移除typedef