このように私のこの機能では、 "carboard.c:79:1:warning:制御は非void関数[-Wreturn-type]"の終わりに達します。プログラムは正常に動作しますが、私はそれをきれいにコンパイルしたいだけです。ここ"制御は非空白関数の終わりに達する"という警告を解決する方法は?
は、関数のコードです:
int loadMainMenu()
{
char choice[LINE + EXTRA_SPACES];
Boolean menu = TRUE;
printf("\nWelcome to Car Board\n");
printf("--------------------\n");
printf("1. Play Game\n");
printf("2. Show Student's Information\n");
printf("3. Quit\n");
printf("\n");
printf("Please Enter Your Choice:\n");
do
{
int input;
fgets(choice, LINE + EXTRA_SPACES, stdin);
if (choice[strlen(choice) - 1] != '\n')
{
printf("BUFFER OVERFLOW!\n\n");
readRestOfLine();
}
choice[strlen(choice) - 1] = 0;
input = atoi(choice);
switch(input)
{
case 1: playGame();
break;
case 2: showStudentInformation();
loadMainMenu();
break;
case 3:
printf("Bye bye! \n");
return EXIT_SUCCESS;
break;
default: printf("Invalid input\n");
loadMainMenu();
break;
}
}while(menu);
}
無限ループが必要な場合は、別の変数は必要ありません。while(true)は 'while(menu)'と同様に動作します。 – EOF
有名な最後の言葉:「プログラムはうまくいっています」 - これを聞くたびに1セントがあるとしたら...「void」関数を使って、本当に復帰したくない場合は、 '_Noreturn'とするのが最良です。 – Olaf
関数が値を返すように定義されています。しかし、関数内のいくつかのパスは値を返しません。関数の最後に 'return 0'を追加するか、デフォルトで返されるはずのものがあればそれを追加してください。 – kaylum