Protéger le .h
clampin
Membre
Salut,
Souvent en C et C++ dans le fichier .h ont doit indiquer
Or je vois que lorsqu'on ajoute une classe objective-C on n'a pas le "ifndef...endif"
Est-ce donc inutile en objective-c et pourquoi ?
Merci
Souvent en C et C++ dans le fichier .h ont doit indiquer
<br />#ifndef IDENTIFICATEUR<br />#define IDENTIFICATEUR<br /><br />/* zone protegee contre les inclusions multiples */<br /><br />#endif /* guard */<br />
Or je vois que lorsqu'on ajoute une classe objective-C on n'a pas le "ifndef...endif"
Est-ce donc inutile en objective-c et pourquoi ?
Merci
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
Le problème des inclusions multiples est courant en langage C et on utilise donc la structure que tu cites.
Donc elle a l'effet équivalent au #ifndef/#define/#endif que tu cites. Sauf que c'est une directive #pragma, donc par définition les #pragma sont propres au compilateur (chaque compilateur autorise des #pragma qui lui sont propre et pas forcément d'autres #pragma... et doit ignorer les #pragma qu'il ne connait pas. Du coup d'un compilateur à l'autre un #pragma comme "#pragma once" n'aura pas forcément d'effet.
Donc même si dans certains codes C qui ciblent une plateforme et un compilateur spécifique tu pourras trouver des "#pragma once", au final #ifndef/#define/#endif est plus courant car portable et fonctionnant avec tous les compilateurs C.
Par contre, en Objective-C, comme l'a décrit Céroce, la directive #import fait partie du langage Objective-C, et donc est supportée par tous les compilateurs sachant compiler de l'Objective-C (comme gcc, llvm, ...). C'est d'ailleurs pour cela qu'elle est utilisée partout, à la place de #include.