[英]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.