Avatar ·

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