Neste artigo, o motivo de usar #ifndef e #definir Os guardas do cabeçalho em seu código são discutidos.
Por que #ifndef e #define são usados em arquivos de cabeçalho C ++
Em C ++, o #ifdef e #definir são usados como uma instrução para o compilador para proteger/proteger o uso múltiplo de arquivos de cabeçalho. Por esse motivo, eles também são chamados guardas de cabeçalho. Há uma sintaxe específica que precisa ser seguida para usar #ifndef e #definir. Então, a sintaxe é que sempre que #ifndef é usado, o usuário também é necessário para encerrá -lo usando #fim se e entre estes, quaisquer declarações ou arquivos de cabeçalho podem ser adicionados:
Sintaxe
#ifndef file_hNo código C ++, #ifndef e #definir Identifique e prevenir a redeclaração de classes, enumes, variáveis estáticas ou quaisquer outros identificadores. Isso é útil em cenários em que várias classes/funções são criadas e estão sendo chamadas em programas. Porque muitas vezes isso acontece quando um código complexo com várias classes e objetos é projetado e os desenvolvedores tendem a repetir certos identificadores em diferentes arquivos. Por exemplo, vamos supor que um usuário tenha criado dois arquivos correlacionados i.e arquivo1.h e a File2.h e incluiu o arquivo1.h no arquivo2.H e vice -versa.
Ao fazer isso, ocorre uma repetição causando recursividade. Para evitar essa recursividade se o usuário adicionar #ifndef e #definir Arquivos de cabeçalho, então esses cabeçalhos instruirão o compilador para impedir essa recursividade.
O que é recursividade em um código e como ““#ifndef” e ““#definir” Ajuda com recursividade
Recursividade refere -se à capacidade de uma função ser incluída várias vezes em um código -fonte. Ter recursividade em um código gerará diferentes tipos de erros de compilação, como múltiplas definições, redefinição de símbolos e mais. Para evitar essa recursividade, usamos “#Ifndef” e "#definir" guardas de cabeçalho.
Vamos acompanhar um exemplo de como “#Ifndef” e "#definir" evita a recursividade em um código. Suponha que exista um arquivo de cabeçalho “x.h " Isso inclui o arquivo de cabeçalho “y.h ", e o outro arquivo de cabeça “y.h " Inclui “x.h ". Isso é chamado de inclusão recursiva e criará erros quando você compilar o código. Para evitar isso, podemos usar #ifndef e #definir em x.h e y.h do seguinte modo:
O arquivo de cabeçalho x.h é dado abaixo:
#ifndef x_hO arquivo de cabeçalho y.h é dado abaixo:
#ifndef y_hAqui, X_h e Y_h são símbolos únicos definidos por #definir. A primeira vez x.h está incluído, X_h não será definido, então o pré -processador o definirá e incluirá y.h. Quando y.h está incluído, Y_h não será definido, então o pré -processador o definirá e incluirá x.h de novo. No entanto, desta vez, A_h será definido, para que o pré -processador pulará a inclusão de x.h.
Dessa forma, a inclusão recursiva é evitada e o programa pode ser compilado sem erros.
Conclusão
O #ifndef e #definir são conhecidos como guardas de cabeçalho Para C ++, que são usados para prevenir/proteger a recursividade ou repetição de identificadores. Os guardas do cabeçalho são usados para pré-processamento e é por isso que eles são usados dentro do .arquivos H (cabeçalho) arquivos e não no principal .cpp Arquivo (compilação). A sintaxe e o uso do protetor de cabeçalho são discutidos nas diretrizes acima mencionadas.