Para que servem #ifndef e #define em arquivos de cabeçalho C++?
Olá a todos! Comecei a estudar C++ recentemente e estou escrevendo meu primeiro programa composto por vários arquivos. Tenho três arquivos: `main.cpp`, `functions.h` e `functions.cpp`.
Aqui está o conteúdo de `functions.h`:
```cpp
// functions.h
void printHello();
int add(int a, int b);
```
Em `functions.cpp`, incluo este arquivo de cabeçalho e defino as funções:
```cpp
// functions.cpp
#include "functions.h"
#include
void printHello() {
std::cout << "Hello, world!" << std::endl;
}
int add(int a, int b) {
return a + b;
}
```
E em `main.cpp`, também incluo `functions.h`:
```cpp
// main.cpp
#include "functions.h"
#include
int main() {
printHello();
std::cout << add(3, 4) << std::endl;
return 0;
}
```
Tudo funciona. Mas notei que em projetos de outras pessoas, no início dos arquivos de cabeçalho, frequentemente escrevem algo como:
```cpp
#ifndef FUNCTIONS_H
#define FUNCTIONS_H
// ... declarações ...
#endif
```
Tentei remover essas linhas