аргумент типа «структурная переменная» несовместим с параметром типа «const char *»

#c #structure

Вопрос:

Я знаю, что strcmp ожидает тип char, я думаю, и pstate в этом случае является указателем на структуру, и я не знаю, как разыменовать это, чтобы работать честно.

 struct  cpu_state
{
    int nextinstructionlinenumber;
    char filename[200];
    char RLO;

    struct instruction instructionlist[30];
    int instructionlistnumber;
    struct variable variablelist[INSTRUCTIONLIST_SIZE];
    int variablelistnumber;
    

};

struct variable {
    //char type[NAME_TYPE_SIZE];
    enum EnumType type;
    char name[NAME_TYPE_SIZE];
    int intvalue;
    char boolvalue;
    float floatvalue;
};    

void AddInstruction(struct cpu_state* pstate, struct instruction* pinstruction){
    if (pstate->instructionlistnumber>=INSTRUCTIONLIST_SIZE){return;}
    pstate->instructionlist[pstate->instructionlistnumber]=*pinstruction;
    pstate->instructionlistnumber  ;
}

void parseargument(struct cpu_state *pstate, char name[], struct variable** ppvar){
    if (name[0]>='0' amp;amp; name[0]<=9) {
        //literal
        //(*ppvar)->type= 
        //(*ppvar)->values=         
    }

    // variable
    for (int i=0;i<pstate->variablelistnumber;i  ){
        if (strcmp(name, pstate->variablelist[i])==0){
            *ppvar=amp;pstate->variablelist[i];
            return;
        }
    }
}
 

Комментарии:

1. Предоставьте полный код в минимальном примере. У нас нет возможности узнать, что pstate->variablelist[i] есть. По крайней мере, предоставьте определение структуры.

2. Хорошо, я отредактировал свой пост.

3. структурная переменная { //тип символа[NAME_TYPE_SIZE]; тип перечисления EnumType; имя символа[NAME_TYPE_SIZE]; значение int intvalue; логическое значение символа; значение с плавающей запятой; };

4. Я не могу поместить весь код, поэтому я добавил в переменную структуры coments

5. Глядя на определения , которые, я думаю, вы имеете в виду strcmp(name, pstate->variablelist[i].name)==0) , но я также думаю, что вы пытаетесь запрограммировать что-то намного выше вашего уровня мастерства.