Advarselkontroll når enden av ikke-void-funksjonen

Advarselkontroll når enden av ikke-void-funksjonen
Når vi skriver programmene i C++. Etter å ha utført programmer, får vi noen ganger feilen: 'Advarsel: Kontroll når slutten på ikke-void-funksjon', noe som betyr at visse funksjoner som må returnere noen verdier, oppnå terminering. Det gir kanskje ikke noen verdi senere. På dette tidspunktet er det godt å se på om hver kontrollstrøm inneholder en avkastningsverdi eller ikke. For å gjenkjenne denne feilen, må vi først gjenkjenne kompilatorens arbeid.

Det er to varianter av unøyaktigheter som skjer mens du utfører et program.

Kompileringstidsfeil: Feil som kan gjenkjennes ved hjelp av å bruke kompilatoren uten å utføre koden. Vanligvis er dette syntaksfeil som gjenkjennes uten å utføre koden.

Kjøretidsfeil: Feil som skjer mens programsyntaksen er nøyaktig; Imidlertid er det litt problemer mens koden utfører. Vanligvis faller ugyldige minn.

Denne artikkelen vil snakke om vanlige problemer konfrontert med nybegynnere og i tillegg dyktige programmerere. Vi utfører ofte i forsiktighet med å si forsiktighet: 'Kontroll når slutten på ikke-voidfunksjon'. Vanligvis forsømmer vi denne feilen på grunn av det faktum at maksimalt er fordi programmet likevel utfører det samme, og antar til og med at denne forsiktighet kommer.

Få advarselsmeldingen:

Å sammenstille denne koden utføres, men en feil oppstår, som viser advarselen 'Kontrollen når slutten på ikke-void-funksjon'. Hver funksjon inneholder en returtype som viser den typen verdi funksjonen kanskje returnerer. Hvis metoden ikke returnerer noen verdi, er den langt fra en tomromstype. Vi oppnår feilen ovenfor, mens ikke-void-funksjonen ikke returnerer verdien.

#inkludere
ved hjelp av navneområdet STD;
int f ()
hvis (falsk)
retur 0;

int main ()
f ();
retur 0;

I dette tilfellet integrerer vi først overskriftsfilen og bruker navneområdet standard. Videre bruker vi IF -uttalelsen. Noen ganger kan det være situasjonen at vi har mange IF-Else hvis uttalelser og alle uttalelsene inneholder returverdien; Imidlertid, hvis det ikke er noen annen påstand, kan vi likevel få feilen på grunn av at kompilatoren ikke kunne forstå at enhver situasjon dekkes.

Her får vi ingenting i output, så det betyr at koden utføres vellykket, men funksjonen returnerer ingen verdi.

Bruk hvis uttalelse:

I dette tilfellet, hvis tilstanden vanligvis ikke er sann og følgelig, vil den stoppe funksjonen 'F' fratatt å returnere en viss verdi. Og det er grunnen til å motta oppmerksomhetsmeldingen. Kontroll innen oppmerksomhetsmeldingen viser strømmen av denne koden. La oss nå sjekke om det er en runtime-feil eller feiltidsfeil. Advarselen som vi får her blir oppdaget på monteringstid, bruk av bare syntaks for denne koden, og koden er ikke alltid definitivt utført for å teste om det langt er å oppnå avslutning av en hvilken som helst ikke-void-metode.

#inkludere
ved hjelp av navneområdet STD;
int f (int a)
hvis en < 8)
retur 0;

int main ()
f (3);
retur 0;

Vi er alltid sikre på at hvis vi utfører koden, returnerer den 0 -verdien; Likevel kan vi oppnå den samme forsiktighetsmeldingen på grunn av at kompilatoren ikke fungerer smart nok til å gjenkjenne på kompileringstid for at når denne koden er utført, vil den returnere verdien hver gang. Kompilatoren sjekker ganske enkelt syntaksen til koden, og den oversettes at for funksjonen 'F' hvis den definerte tilstanden ikke er sann, vil flyten av denne koden oppnå linje åtte, og den kunne ikke returnere verdien, og derfor vi Få feilen.

Etter å ha sammenstilt programmet, i output, får vi ingenting på grunn av feilen 'Kontrollen når slutten av ikke-void-funksjon'.

Bruk returuttalelsene:

Når de betingede uttalelsene ikke må omfatte noen returuttalelser, kommer kontrollen til slutten av en ikke-void-funksjon på en annen måte. Derfor, hvis implementeringen innenfor ikke-void-metoden er atskilt og hvis uttalelser ikke kunne utføre hver vei, må vi på slutten eksplisitt kalle 'retur for funksjonen.

Den påfølgende forekomsten validerer strenghåndteringsfunksjonen med betingede stier. Her inkluderer vi tre biblioteker for forskjellige formål, og etter det erklærer vi en funksjon. På den annen side blir det ikke lenger vurdert noen få tilfeller for den definerte tilstanden, noe som betyr at kontrollstrømmen kan oppnå opphør av funksjonen og gi feil.

Her definerte vi funksjonen 'reversestring'. Vi passerer strengen og tilstanden som parametere til denne funksjonen. Funksjonsorganet inneholder ingen returerklæring. Imidlertid inneholder den ingen argumenter for å kalle funksjonen. Så kompilatoren viser bare forsiktighetsmeldingen. Hvis vi kaller funksjonen, får vi ikke feilen.

Konklusjon:

I denne artikkelen får vi informasjon om feilen: 'Kontroll når slutten på ikke-voidfunksjon' og ser hvordan vi får denne feilen. Ikke-void-metoden inneholder returtypen. Dermed ønsker metoden å ha en erklæring som returnerer elementene av den resulterende typen. Hvis bestemte kompilatorstandarder aksepteres, kan denne feilen bli undertrykt fullstendig, noe som fører til kjøretidsfeil hvis den spesifiserte metoden ringer i koden.