J'ai vu le code comme celui-ci habituellement au début des fichiers d'en-tête:
#ifndef HEADERFILE_H
#define HEADERFILE_H
Et à la fin du fichier est
#endif
Quel est le but de ceci?
Celles-ci s'appellent # incluent les gardes .
Une fois que l'en-tête est inclus, il vérifie si une valeur unique (dans ce cas, HEADERFILE_H
) est définie. Ensuite, si ce n'est pas défini, il le définit et continue vers le reste de la page.
Lorsque le code est à nouveau inclus, le premier ifndef
échoue, ce qui entraîne un fichier vide.
Cela empêche la double déclaration d'identificateurs tels que les types, les énumérations et les variables statiques.
#ifndef <token>
/* code */
#else
/* code to include if the token is defined */
#endif
#ifndef
vérifie si le jeton donné a été #defined
plus tôt dans le fichier ou dans un fichier inclus; sinon, il inclut le code entre lui et le #else
de clôture ou, si aucun #else
n'est présent, l'instruction #endif
. #ifndef
est souvent utilisé pour rendre les fichiers d'en-tête idempotents en définissant un jeton une fois que le fichier a été inclus et en vérifiant que le jeton n'a pas été défini en haut de ce fichier.
#ifndef _INCL_GUARD
#define _INCL_GUARD
#endif
Cela empêche d'inclure plusieurs fois plusieurs fois le même fichier d'en-tête.
#ifndef __COMMON_H__
#define __COMMON_H__
//header file content
#endif
Supposons que vous ayez inclus ce fichier d’en-tête dans plusieurs fichiers. Donc, la première fois que __COMMON_H__ n'est pas défini, il sera défini et le fichier d'en-tête est inclus.
La prochaine fois que __COMMON_H__ est défini, il ne sera plus inclus.