Ast C ++

Ast C ++
Język C ++ pojawił się z oświadczeniami o stwierdzeniu, aby pomóc programistom sprawdzić warunki lub stwierdzenia, które mogą być logicznie nieprawidłowe. W ramach tego artykułu C ++ będziemy używać oświadczenia „Assert” w naszych przykładach, aby zilustrować jego pracę nad błędami w zakresie rzutów, jeśli istnieje jakiś logiczny problem. Jeśli szukasz pomocy w debugowaniu takich oświadczeń, masz szczęście, że masz ten artykuł. Zacznijmy nasz nowy artykuł C ++, otwierając zastosowanie konsoli powłoki Ubuntu 20.04 System z skrótem „Ctrl+Alt+T”.

Będziesz tworzyć nowy plik C ++ w swoim terminalu. Należy to zrobić za pomocą zapytania „dotyk” w skorupce. Zatem zapytanie użyte do tego celu zostało wyświetlone na obrazie poniżej.

Teraz plik jest umieszczony w eksploratorze plików domowych systemu Linux. Musimy otworzyć ten plik C ++ w jednym z naszych zainstalowanych redaktorów, i.mi., vim, tekst lub nano. W tym celu wybraliśmy redaktora GNU Nano. Polecenie otwierające ten nowy plik jest pokazane poniżej.

Przykład 01

Zacznijmy od pierwszego przykładu użycia instrukcji Assert w kodzie C ++ w celu potwierdzenia logiki niektórych instrukcji kodu. Rozpoczęliśmy kod z plikami nagłówka. Dodanie nagłówka strumienia wejściowego jest konieczne podczas pracy na platformie C ++. Standardowa przestrzeń nazw jest obowiązkowa w C ++ z słowem kluczowym „używając” i „std”, jak widać również na obrazie. W przypadku użytkownika instrukcji „Assert” musimy dodać plik nagłówka Assert, aby był funkcjonalny. Dlatego dodaliśmy „Assert.H ”plik nagłówka ze słowem kluczowym„ #Include ”. Metoda Main () została rozpoczęta do wykonania.

Zainicjowaliśmy zmienną liczbową o nazwie „Val” o wartości 13. W następnej kolejnej linii zmienna „VAL” została zastąpiona inną wartością 15. Oświadczenie Assert zostało następnie użyte do sprawdzenia, czy zmienna „VAL” ma równą wartość 13. Ponieważ jest to logicznie niepoprawne, a zmienna „val” została zastąpiona wartością 15, rzuci wyjątek. Zapiszmy kod po zakończeniu funkcji Main () z „Ctrl+S”. Po oszczędzaniu musimy wrócić do terminalu w celu kompilacji i wykonania za pomocą „Ctrl+x”.

W przypadku kompilacji kodu C ++ musisz potrzebować kompilatora skonfigurowanego w Ubuntu 20.04 System. W ten sposób używamy instrukcji kompilacji G ++ w powłoce do skompilowania pliku „Asert.CC ”. Kompilacja nie zwraca nic w zamian, wyjaśnia nam, że kod jest syntaktycznie poprawny. Po prostu wykonajmy plik z naszym wiecznym „./A.OUT „polecenie w konsoli. Uruchomienie pliku zwraca błąd w zamian, ponieważ instrukcja Assert zwraca false w zamian. Dane wyjściowe przedstawiono na obrazie.

Jeśli chcesz uniknąć potwierdzonego wyjścia błędu według instrukcji Assert, musisz zdefiniować flagę NO debugowania w kodzie C ++. W tym celu musisz użyć słowa kluczowego „Zdefiniuj” ze znakiem skrótu i ​​„ndebug” jako flagi w obszarze nagłówka. W ten sposób otworzyliśmy ten sam plik i dodaliśmy przestrzeń nazw po pliku nagłówka „IO”. Po standardowej przestrzeni nazw zdefiniowaliśmy flagę „Ndebug” w nagłówku i użyliśmy „Assert.H ”nagłówek po nim. Pamiętaj, aby nie zmieniać sekwencji nagłówków pokazanych poniżej. W ramach funkcji Main () dodaliśmy instrukcję Cout do wyjścia, że ​​wyłączanie Assert zakończyło się powodzeniem.

Skompilujmy i uruchommy ten zaktualizowany kod ponownie w powłoce. Po tym, tym razem nie mamy błędów, używając „ndebug” w naszym obszarze nagłówka.

Przykład 02

Zróbmy nowy przykład użycia instrukcji Assert w kodzie C ++. Ale tym razem będziemy używać instrukcji Assert w ramach jakiejś funkcji zdefiniowanej przez użytkownika. W ten sposób dodaliśmy pliki nagłówka i standardową przestrzeń nazw na początku kodu w sekwencji. Metoda definicji użytkownika o nazwie „show ()” została zadeklarowana, przyjmując wartość wskaźnika typu liczb całkowitych w swoim parametrze.

W ramach funkcji show () używamy instrukcji „Assert”, aby sprawdzić, czy wskaźnik przekazany w parametrze nie jest zerowy. Jeśli jest zerowy, błąd zostanie rzucony. Instrukcja Cout wyświetli następnie wartość zmiennej, na którą wskazuje wskaźnik „v”. W ramach głównej funkcji zainicjowaliśmy zmienną całkowitą „VAL” o wartości 13. Zainicjowano dwa wskazówki „A” i „B”. Adres zmiennej „Val” został związany z wskaźnikiem „A”. Funkcja show () została wywołana przez przechodzące wskaźnik „a” i „b” osobno, aby wyświetlić różne wyniki. Drugie wywołanie funkcji wyświetlania musi rzucić wyjątek, ponieważ przyjmuje wskaźnik zerowy, a instrukcja Assert zwraca false w zamian. Zapiszmy i uruchommy kod.

Po uruchomieniu tego kawałka kodu mamy ten sam wynik, jak omówiliśmy powyżej. Pokazuje wynik 13 dla pierwszego wywołania funkcji, i.mi., przekazany wskaźnik „A”, podczas gdy drugie wywołanie funkcji pokazuje błąd.

Aby naprawić ten błąd, wystarczy powiązać wskaźnik „B” również ze zmienną „VAL”. Zatem zrobiliśmy to samo w ramach kodu poniżej podsłuchu. Zastąpiliśmy zmienną „VAL” V1 i dodaliśmy kolejną zmienną „V2”. Zmienna V1 została związana wskaźnikiem „A”, a V2 było związane z wskaźnikiem „B”. Ogólny skrypt pozostaje taki sam, jak pokazano.

Po debugowaniu kodu i uruchomieniu, do tej pory nie znaleziono błędów. Zarówno wartości dla zmiennych V1 i V2 zostały pomyślnie wyświetlane, jak pokazano poniżej.

Przykład 03

Zakończmy z ostatnim, ale nie najmniejszym przykładem instrukcji Assert w kodzie C ++. Kod zawiera dwa stwierdzenia Assert i dwa instrukcje Cout. Pierwsza instrukcja Assert jest sprawdzana, czy mnożenie powoduje to samo wyjście. Ponieważ warunek jest poprawny logicznie, musi zwrócić prawdę i nie zostanie wyświetlony błąd. Instrukcja Cout zostanie wykonana, pokazując, że pierwsza instrukcja była poprawna. Druga instrukcja Assert ponownie sprawdza, czy mnożenie po obu stronach zwraca to samo wyjście. Ponieważ wyjście nie byłoby takie same, będzie logicznie nieprawidłowe. Stąd powraca fałsz. Z tego powodu wystąpi błąd, a instrukcja Cout nie zostanie następnie wykonana.

Z powodu błędu logicznego program kończy się automatycznie po wykonaniu pierwszego cout.

Aby rozwiązać ten problem, będziemy używać flagi „Ndebug” w kodzie, tak jak to do tej pory zrobiliśmy.

Tym razem nie wyświetlono błędu, a oba instrukcje Cout są wykonywane.

Wniosek

Artykuł dotyczy użycia instrukcji C ++ Assert. Staraliśmy się jak najlepiej zademonstrować pracę za pośrednictwem funkcji Main () i funkcji zdefiniowanej przez użytkownika. Omówiliśmy również sposób wyłączenia asserta w C ++, i.mi., flaga Ndebug. Mamy nadzieję, że wszystkie przykłady zapewnią ci ogromną pomoc.