Avatar ·

¿Por qué se necesitan #ifndef y #define en los archivos de cabecera de C++?

¡Hola a todos! Acabo de empezar a aprender C++ y estoy escribiendo mi primer programa que consta de varios archivos. Tengo tres archivos: `main.cpp`, `functions.h` y `functions.cpp`. Aquí está el contenido de `functions.h`: ```cpp // functions.h void printHello(); int add(int a, int b); ``` En `functions.cpp` incluyo este archivo de cabecera y defino las funciones: ```cpp // functions.cpp #include "functions.h" #include void printHello() { std::cout << "Hello, world!" << std::endl; } int add(int a, int b) { return a + b; } ``` Y en `main.cpp` también incluyo `functions.h`: ```cpp // main.cpp #include "functions.h" #include int main() { printHello(); std::cout << add(3, 4) << std::endl; return 0; } ``` Todo funciona. Pero noté que en proyectos ajenos, al principio de los archivos de cabecera a menudo escriben algo como: ```cpp #ifndef FUNCTIONS_H #define FUNCTIONS_H // ... declaraciones ... #endif ``` Intenté quitar esas líneas