Question

Considère ceci:

#ifndef GUARD_H
#define GUARD_H
...
#endif GUARD_H

plutôt que:

#ifndef GUARD_H
#define GUARD_H
...
#endif // GUARD_H

Souvent je vois au #endif Un «identifiant» a commenté mais sans le commenter, cela fonctionne toujours.

Est tout après le #endif ingéré ou ...?

Était-ce utile?

La solution

Non, ce n'est pas un C ++ valide: il est mal formé. Il ne peut y avoir de jetons entre le # endif et la nouvelle ligne qui met fin à la ligne de directive de prétraitement.

Si vous souhaitez reformuler la condition du #if Directive, vous boîte Faites-le dans un commentaire:

#endif // GUARD_H

Cependant, c'est vraiment juste redondant, surtout pour les gardes d'inclusion: si c'est le dernier #endif Dans un fichier d'en-tête, c'est presque certainement là pour mettre fin à la #ifdef Utilisé en haut pour empêcher l'inclusion multiple, non?

Dans d'autres endroits où vous pouvez avoir plusieurs niveaux de directives conditionnelles imbriquées, ce force Soyez utile, mais même dans ce cas, il est souvent préférable de refacter le code pour le rendre plus simple ou plus simple.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top