Dlaczego #ifndef i #Define są używane w plikach nagłówka C ++

Dlaczego #ifndef i #Define są używane w plikach nagłówka C ++
Kody C ++ mogą czasem pokonać długie, a powtórzenie niektórych deklaracji lub funkcji może wystąpić. Posiadanie wielu funkcji o podobnych nazwach generuje błąd podczas wykonywania kodu i nie zapewnia użytkownikom żądanego wyjścia. Aby zapobiec powtarzanym identyfikatorom, takimi jak funkcje, klasa lub zmienne, Strażnicy nagłówka są używane, które są #ifndef I #definiować. Są to pochodne C ++, które uniemożliwiają wielokrotne użycie zawartości pliku nagłówka. Strażnicy zapewniają, że zawartość pliku nagłówka jest używana raz w pliku.

W tym artykule powód do użycia #ifndef I #definiować Strażnicy nagłówka w twoim kodzie są omawiane.

Dlaczego #ifndef i #Define są używane w plikach nagłówka C ++

W C ++, #ifdef I #definiować są używane jako instrukcja dla kompilatora do ochrony/ochrony wielu użycia plików nagłówkowych. Z tego powodu są również nazywane strażnicy nagłówka. Istnieje konkretna składnia, której należy zastosować, aby użyć #ifndef I #definiować. Zatem składnia jest taka, kiedy tylko #ifndef jest używany, użytkownik jest również zobowiązany do zakończenia go za pomocą #endif a między tymi wszelkimi deklaracją lub plikami nagłówka można dodać:

Składnia

#ifndef File_H
#Define File_H
// Kod deklaracji
#endif

W kodzie C ++, #ifndef I #definiować Zidentyfikuj i zapobiegaj ponownemu ponowne ujęcia klas, wyliczeń, zmiennych statycznych lub innych identyfikatorów. Jest to przydatne w scenariuszach, w których tworzone są wiele klas/funkcji i są wywoływane w programach. Ponieważ wiele razy dzieje się tak, gdy zaprojektowany jest złożony kod z wieloma klasami i obiektami, a programiści zwykle powtarza niektóre identyfikatory w różnych plikach. Na przykład załóżmy, że użytkownik utworzył dwa skorelowane pliki i.mi plik 1.H i a plik2.H i zawierał File1.H w pliku2.H i odwrotnie.

W ten sposób następuje powtórzenie, powodując rekurencyjność. Aby uniknąć tej rekurencyjności, jeśli użytkownik doda #ifndef I #definiować Pliki nagłówkowe, wówczas nagłówki będą instruują kompilatora, aby zapobiec tej rekurencyjności.

Co to jest rekurencyjność w kodzie i jak "#ifndef" I "#definiować" Pomoc w rekurencyjności

Rekursywność odnosi się do zdolności funkcji, która ma być wiele razy w kodzie źródłowym. Rekurencyjność w kodzie wygeneruje różne typy błędów kompilacji, takie jak wiele definicji, redefinicja symboli i więcej. Aby zapobiec tej rekurencyjności, używamy „#Ifndef” I "#definiować" strażnicy nagłówka.

Śledźmy przykład, jak „#Ifndef” I "#definiować" zapobiega rekurencyjności w kodzie. Załóżmy, że istnieje plik nagłówka „X.H" Obejmuje to plik nagłówka „y.H", i drugi plik główny „y.H" Obejmuje „X.H". Nazywa się to włączeniem rekurencyjnym i utworzy błędy podczas kompilacji kodu. Aby temu zapobiec, możemy użyć #ifndef I #definiować W X.H I y.H następująco:

Plik nagłówka X.H podano poniżej:

#ifndef x_h
#definicja x_h
#include "y.H"
// pozostała zawartość pliku nagłówka
#endif

Plik nagłówka y.H podano poniżej:

#ifndef y_h
#określić y_h
#include "x.H"
// pozostała zawartość pliku nagłówka
#endif

Tutaj, X_h I Y_h są unikalnymi symbolami zdefiniowanymi przez #definiować. Pierwszy raz X.H jest wliczone, X_h nie zostanie zdefiniowane, więc preprocesor go zdefiniuje i uwzględni y.H. Gdy y.H jest wliczone, Y_h nie zostanie zdefiniowane, więc preprocesor go zdefiniuje i uwzględni X.H Ponownie. Jednak tym razem, A_H zostanie zdefiniowane, aby preprocesor pominął włączenie X.H.

W ten sposób zapobiega się rekurencyjnym włączeniu i programu można skompilować bez błędów.

Wniosek

#ifndef I #definiować są znane jako strażnicy nagłówka W przypadku C ++, które są używane do zapobiegania/ochrony rekurencyjności lub powtórzeń identyfikatorów. Strażnicy nagłówka są używane do przetwarzania wstępnego i dlatego są używane w środku .H Pliki (nagłówek) pliki, a nie w główny .CPP (kompilacja) plik. Składnia i wykorzystanie strażnika nagłówka są omówione na wyżej wymienionych wytycznych.