Kontrola ostrzegawcza kończy koniec funkcji nieważnej

Kontrola ostrzegawcza kończy koniec funkcji nieważnej
Kiedy piszemy programy w C++. Po wykonaniu programów czasami otrzymujemy błąd: „OSTRZEŻENIE: Kontrola dociera do końca funkcji nieważnej”, co oznacza, że ​​niektóre funkcje, które musiałyby zwrócić niektóre wartości, osiągają zakończenie. Może nie dawać żadnej wartości później. W tej chwili dobrze jest przyjrzeć się, czy każdy przepływ kontrolny zawiera wartość zwracaną. Aby rozpoznać tę usterkę, najpierw musimy rozpoznać działanie kompilatora.

Istnieją dwie odmiany niedokładności, które zdarzają się podczas wykonywania programu.

Błędy w czasie kompilacji: Błąd, który można rozpoznać za pomocą kompilatora bez wykonywania kodu. Zwykle są to błędy składniowe, które są rozpoznawane bez wykonywania kodu.

Błędy w czasie wykonywania: Usterka, która dzieje się, gdy składnia programu jest dokładna; Jednak jest trochę kłopotów podczas wykonywania kodu. Zwykle nieprawidłowy dostęp do nieograniczonych pętli spadają poniżej błędów w czasie wykonywania.

W tym artykule powie o popularnych problemach z nowicjuszami i dodatkowo wykwalifikowanymi programistami. Często wykonywamy ostrożność, stwierdzając ostrożność: „Kontrola osiąga koniec funkcji nieważnej”. Zwykle zaniedbujemy ten błąd ze względu na fakt maksymalnie czasu, ponieważ program wykonuje to samo, nawet zakładając, że ta ostrożność nadchodzi.

Uzyskaj wiadomość ostrzegawczą:

Kompilowanie tego kodu wykonuje się, ale występuje błąd, który pokazuje ostrzeżenie „kontrola dociera do końca funkcji nieważnej”. Każda funkcja zawiera typ zwrócony, który pokazuje rodzaj wartości, którą funkcja może zwrócić. Jeśli metoda nie zwraca żadnej wartości, jest daleka od typu zwrotnego. Otrzymujemy powyższy błąd, podczas gdy funkcja nie do picia nie zwraca wartości.

#włączać
za pomocą przestrzeni nazw Std;
int f ()
if (fałsz)
powrót 0;

int main ()
F();
powrót 0;

W tym przypadku najpierw zintegrujemy plik nagłówka i używamy standardu przestrzeni nazw. Ponadto stosujemy oświadczenie IF. Czasami może to być sytuacja, w której mamy liczne, jeśli instrukcje i wszystkie instrukcje zawierają wartość zwracaną; Jeśli jednak nie ma innego twierdzenia, możemy jednak uzyskać błąd z powodu faktu, że kompilator nie mógł zrozumieć, że każda sytuacja jest objęta.

Tutaj nie otrzymujemy żadnego wyjścia, więc oznacza to, że kod jest pomyślnie wykonywany, ale funkcja nie zwraca żadnej wartości.

Użyj instrukcji IF:

W tym przypadku, jeśli warunek zwykle nie jest prawdziwy, w związku z czym zatrzyma funkcję „F” pozbawioną zwrócenia jakiejś wartości. I jest to powód otrzymania przesłania uwagi. Kontrola w komunikacie uwagi pokazuje przepływ tego kodu. Teraz sprawdźmy, czy jest to błąd środowiska wykonawczego, czy błąd w czasie kompilacji. Ostrzeżenie, które tutaj otrzymamy, jest wykrywane w czasie montażu, użycie po prostu składni tego kodu, a kod nie zawsze jest zdecydowanie wykonane, aby sprawdzić, czy jest to dalekie zakończenie zakończenia dowolnej metody nieważnej.

#włączać
za pomocą przestrzeni nazw Std;
int f (int a)
Jeśli < 8)
powrót 0;

int main ()
f (3);
powrót 0;

Zawsze jesteśmy pewni, że jeśli wykonamy kod, zwraca on 0 wartość; Niemniej jednak możemy uzyskać ten sam komunikat ostrożności ze względu na fakt, że kompilator nie działa wystarczająco mądrze, aby rozpoznać w czasie kompilacji, że po wykonaniu tego kodu zwróci wartość za każdym razem. Kompilator po prostu sprawdza składnię kodu i tłumaczy, że dla funkcji „F” Jeśli zdefiniowany warunek nie jest prawdziwy, przepływ tego kodu osiągnie linię ósmą i nie mógł zwrócić wartości, a zatem my my my Uzyskaj błąd.

Po skompilowaniu programu, przy wyjściu, nic nie otrzymujemy ze względu na błąd „Kontrola dociera do końca funkcji nieważnej”.

Użyj instrukcji powrotu:

Gdy instrukcje warunkowe nie mogą zawierać żadnych instrukcji zwrotnych, kontrola dochodzi do końca funkcji nieważnej w inny sposób. Dlatego, jeśli implementacja w metodzie nierównomiernej jest oddzielona i jeśli instrukcje nie mogą wykonać każdej ścieżki, to na końcu musimy wyraźnie wywołać „zwrócić” dla funkcji.

Kolejne wystąpienie sprawdza funkcję obsługi łańcucha o ścieżkach warunkowych. Tutaj dołączamy trzy biblioteki do różnych celów, a następnie deklarujemy funkcję. Z drugiej strony pozostało już kilka instancji nie ocenianych pod kątem określonego warunku, co oznacza, że ​​przepływ kontrolny może osiągnąć zaprzestanie funkcji i wywołać błędy.

Tutaj zdefiniowaliśmy funkcję „odwracanie”. Przekazujemy ciąg i warunek jako parametry do tej funkcji. Ciało funkcyjne nie zawiera instrukcji powrotu. Nie zawiera jednak żadnych argumentów wywoływania funkcji. Więc kompilator pokazuje po prostu wiadomość ostrożność. Jeśli wywołamy funkcję, nie otrzymujemy błędu.

Wniosek:

W tym artykule otrzymujemy informacje o błędach: „Kontrola dociera do końca funkcji nie do poznania” i widzimy, w jaki sposób otrzymamy ten błąd. Metoda nieważna zawiera typ powrotu. Zatem metoda chce mieć deklarację, która zwraca elementy typu. Jeśli określone standardy kompilatora zostaną zaakceptowane, błąd ten może zostać całkowicie tłumiony, co prowadzi do błędów w czasie wykonywania, jeśli określona metoda wywoła w kodzie.