Avatar ·

Pourquoi #ifndef et #define sont-ils nécessaires dans les fichiers d'en-tête C++ ?

Bonjour à tous ! Je viens de commencer à apprendre le C++ et j'écris mon premier programme composé de plusieurs fichiers. J'ai trois fichiers : `main.cpp`, `functions.h` et `functions.cpp`. Voici le contenu de `functions.h` : ```cpp // functions.h void printHello(); int add(int a, int b); ``` Dans `functions.cpp`, j'inclus ce fichier d'en-tête et je définis les fonctions : ```cpp // functions.cpp #include "functions.h" #include void printHello() { std::cout << "Hello, world!" << std::endl; } int add(int a, int b) { return a + b; } ``` Et dans `main.cpp`, j'inclus aussi `functions.h` : ```cpp // main.cpp #include "functions.h" #include int main() { printHello(); std::cout << add(3, 4) << std::endl; return 0; } ``` Tout fonctionne. Mais j'ai remarqué que dans les projets des autres, au début des fichiers d'en-tête, on écrit souvent quelque chose comme : ```cpp #ifndef FUNCTIONS_H #define FUNCTIONS_H // ... déclarations ... #endif ``` J'ai essayé de supprimer ces lignes...