Maison > Article > développement back-end > Pourquoi les protections d'en-tête sont-elles essentielles pour empêcher la compilation multiple en C ?
Implémentation des gardes d'en-tête et de leur contenu
Les directives du préprocesseur telles que les gardes d'en-tête sont cruciales pour gérer l'inclusion de code et empêcher la compilation multiple. Pour comprendre leur utilisation, examinons l'exemple donné.
Dans les fichiers d'en-tête "add.h" et "subtract.h", les directives #ifndef et #define implémentent des gardes d'en-tête, entourant les déclarations de fonctions. comme "add()" et "subtract()". Le suffixe FILENAME_H, tel que ADD_H, est une convention qui garantit des noms de garde-en-tête uniques.
Définition du contenu entre les gardes-en-tête
Les déclarations des fonctions sont placées entre les Directives #ifndef et #endif, comme indiqué dans le code corrigé :
#ifndef ADD_H #define ADD_H #include "mymath.h" int add(int x, int y); // Function declaration #endif
Int main() Placement
Int main() ne doit jamais être déclaré dans un fichier d'en-tête. Il appartient exclusivement aux fichiers .cpp de définir le point d'entrée du programme.
Utilisation des gardes d'en-tête
Les gardes d'en-tête fonctionnent en vérifiant si la garde a été définie ailleurs. Sinon, le code dans le bloc #ifndef-#endif est traité. Cela garantit qu'un fichier d'en-tête n'est inclus qu'une seule fois dans un fichier .cpp. Plusieurs fichiers .cpp peuvent inclure le même fichier d'en-tête protégé sans duplication.
En résumé, les gardes d'en-tête fournissent un mécanisme permettant d'inclure conditionnellement du code dans un fichier d'en-tête afin d'empêcher plusieurs compilations dans un seul fichier .cpp. Les déclarations de fonction et tout autre code nécessaire doivent être placés entre les directives #ifndef et #endif, tandis que int main() reste en dehors des fichiers d'en-tête.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!