2015-11-17 1 views
4

J'ai joué avec l'option -H de gcc, qui affiche des informations sur les inclusions directes et indirectes dans la compilation C et C++ (relevant section of the gcc manual)."Plusieurs protections d'inclusion peuvent être utiles pour" quoi, exactement?

Dans le cadre de la sortie, il y a une section «Plusieurs protections d'inclusion peuvent être utiles pour:», qui répertorie un certain nombre d'en-têtes de projet et de système. Qu'est-ce que cela signifie, comment cette liste est-elle déterminée, et pourquoi dit-elle "Multiple" inclure des gardes peut-être utile?

(je suis familier avec le concept général d'inclure les gardes, et pourquoi on voudrait les utiliser -. Je cherche des détails sur ce message en particulier, et ce que cela signifie pour mon projet)

Répondre

4

Dans ce cas, "multiple" modifie "includes" - pas "guard". Donc "inclure les gardes" et "inclure les gardes" sont la même chose. Autrement dit, ils protègent contre plusieurs inclusions du même fichier.

La liste est faite par quelque chose comme ceci: d'abord, tous les fichiers sont considérés pour la liste. Cependant, le fichier principal est exclu; et les fichiers qui ont un garde inclus; les fichiers ouverts avec #import; et les fichiers qui ont #pragma once.

Les raisons d'utiliser des gardes sont qu'elles rendent un fichier d'en-tête idempotent, et elles peuvent réduire le temps de compilation. IMO ils sont une meilleure pratique pour C et C++.