Ik voer de volgende C-codes uit en kreeg een waarschuwing: controle bereikt einde van niet-ongeldige functie
int main(void) {}
Heeft u suggesties?
Antwoord 1, autoriteit 100%
Zet gewoon return 0
in je main()
. Uw functie main retourneert een int (int main(void)
) en daarom moet u een return aan het einde ervan toevoegen.
Control bereikt het einde van een niet-ongeldige functie
Problem: I received the following warning:
waarschuwing: controle bereikt einde van niet-ongeldige functie
Oplossing: deze waarschuwing is vergelijkbaar met de waarschuwing die wordt beschreven in Return with no value. Als de besturing het einde van een functie bereikt en er geen return wordt gevonden, gaat GCC uit van een return zonder returnwaarde. Hiervoor heeft de functie echter een retourwaarde nodig. Voeg aan het einde van de functie een return-instructie toe die een geschikte retourwaarde retourneert, zelfs als de controle daar nooit komt.
Oplossing:
int main(void)
{
my_strcpy(strB, strA);
puts(strB);
return 0;
}
Antwoord 2, autoriteit 60%
Als alternatief voor de voor de hand liggende oplossing van het toevoegen van een return
-instructie aan main()
, kunt u een C99-compiler gebruiken (“gcc -std=c99” als u gebruiken GCC).
In C99 is het legaal voor main()
om geen return
-instructie te hebben, en dan retourneert de laatste }
impliciet 0.
$ gcc -c -Wall t.c
t.c: In function ‘main’:
t.c:20: warning: control reaches end of non-void function
$ gcc -c -Wall -std=c99 t.c
$
Een opmerking die puristen belangrijk zouden vinden: u moet nietde waarschuwing corrigeren door main()
te declareren als terugkerend type void
.
Antwoord 3, autoriteit 15%
De hoofdfunctie heeft een return-type van int, zoals aangegeven in
int main(void)
maar uw hoofdfunctie retourneert niets, het sluit na
puts(strB);
Toevoegen
return 0;
daarna en het zal werken.