繁体   English   中英

类型冲突且不返回

[英]conflicting types and no return

您好,我正在做一个类似测验的程序,但它给了我两个错误,一个是“错误:'Pergunta2' 的类型冲突”,另一个错误是返回我希望用户在“M”和“F”但在结构存储“masculino”或“feminino”中,但没有人可以帮助我吗? 谢谢你。

int main()
{

    questionario();
}

void questionario()
{

    int numero = 0;

    struct pessoas{
        int numero_questionario, idade;
        char sexo;
    }QUESTIONARIO[MAXQUESTIONARIO];

    QUESTIONARIO[0].numero_questionario = numero++;

    QUESTIONARIO[0].idade = pergunta1();
    QUESTIONARIO[0].sexo = pergunta2();

    printf("\nnunmero do questionario:%d, idade:%d, sexo:%c ", QUESTIONARIO[0].numero_questionario, QUESTIONARIO[0].idade, QUESTIONARIO[0].sexo);

}

int pergunta1()
{
    int resposta;

    printf("\nPergunta 1 - Idade do participante?");
    printf("\nResposta - ");
    scanf("%d", &resposta);
    if(resposta < 18)
    {
        do{

        printf("\nTem que ser maior de idade.");
        printf("\nResposta - ");
        scanf("%d", &resposta);
        }while(resposta < 18);
    }
    return resposta;
}

char pergunta2()
{
    char resposta;
        printf("\nPergunta 2 - Genero");
        printf("\n   (M)asculino");
        printf("\n   (F)eminino");
    do{
        printf("\nResposta - ");
        scanf("%s", &resposta);
    }while(resposta !='M' && resposta !='m' && resposta !='F' && resposta !='f');
    
    if(resposta == 'M' || resposta == 'm')
    {
        resposta = 'masculino';
    }else if(resposta == 'F' || resposta == 'f')
    {
        resposta = 'femenino';
    }

    return resposta;
}

如果您在使用 function 之前没有声明它,编译器将做出一个“隐式声明”,即 function 不接受 arguments 并返回一个int 然后,您对void questionario()的显式声明与隐式声明int questionario() ) 冲突。

int main()
{   
    // implicit declaration `int questionario()`.
    questionario();
}

// conflicting explicit declaration for `questionario`
void questionario()
{
    ...
}

您可以通过重新排序 function 声明来解决此问题,以便在使用之前声明它们。

void questionario()
{
    ...
}

int main()
{
    questionario();
}

有时这是不可能的。 然后使用重复 function 签名的前向声明 记得改变两者。

void questionario();

int main()
{
    questionario();
}

void questionario()
{
    ...
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM