Je ne suis pas clair avec l'utilisation de __ attribut __ code> Mot-clé à C.I avait lu les documents pertinents de GCC mais je ne suis toujours pas capable de comprendre cela.
4 Réponses :
Il y a trop d'attributs pour y avoir une seule réponse, mais des exemples aident.
Par exemple, Essentiellement, ils sont surtout à dire au compilateur que vous connaissez mieux que cela, ou pour le comportement du compilateur par défaut sur une fonction par fonction de fonction. P> __ attribut __ ((aligné (16))) code> permet au compilateur d'aligner sur une limite de pile de 16 bits. P>
__ attribut __ (((NORÉTURN)) code> Indique au compilateur Cette fonction n'atteint jamais la fin (E.G. Fonctions standard telles que
Quitter (int) Code>) P>
__ attribut __ ((toujours_inline)) code> rend le compilateur en ligne que la fonction même si elle ne choisirait pas normalement (à l'aide du mot-clé en ligne suggère au compilateur que vous voudriez avoir l'inlinage, mais c'est libre de vous ignorer - cet attribut force cela). P>
L'une des caractéristiques les meilleures (mais peu connues) de GNU C est l'attribut Notez que Pour plus d'informations, veuillez consulter http://unixwiz.net/techtips/gnu- c-attributs.html p>
lokesh venkateshiah p>
J'ai écrit un programme après avoir lu les réponses #include
Pensez-y comme un moyen d'injecter la syntaxe dans le code source, qui n'est pas standard C, mais plutôt destiné à la consommation du compilateur GCC uniquement. Mais, bien sûr, vous injectionnez cette syntaxe pas pour le plaisir de celui-ci, mais plutôt de donner aux informations supplémentaires du compilateur sur les éléments auxquels il est attaché. P>
Vous voudrez peut-être instruire le compilateur d'aligner une certaine variable en mémoire à un certain alignement. Ou vous voudrez peut-être déclarer une fonction obsolète de sorte que le compilateur générera automatiquement un avertissement obsolète lorsque d'autres essaient de l'utiliser dans leurs programmes (utiles dans les bibliothèques). Ou vous voudrez peut-être déclarer un symbole comme un symbole faible, de sorte qu'il ne sera lié que dans un dernier recours, si toute autre définition ne figure pas (utile dans la fourniture de définitions par défaut). P>
Tout cela (et plus) peut être atteint en fixant les attributs appropriés aux éléments de votre programme. Vous pouvez les attacher à Variables et Fonctions . P>
Jetez un coup d'œil à tout ce groupe d'autres Extensions GCC à C . Le mécanisme d'attribut fait partie de ces extensions. P>
Une grande partie des informations qu'un compilateur peut apprendre sur C code C (en le lisant), le compilateur peut utiliser les informations qu'il apprends via L'attribut Si vous pouvez garder à l'esprit que (même si quelques autres compilateurs les prennent en charge) attributs forts> sont une extension de la GCC et ne font pas partie de C et leur syntaxe ne correspond pas à C de manière élégante ( Seulement suffisamment pour tromper le préprocesseur), alors vous devriez être capable de les comprendre mieux. P>
Vous devriez essayer de jouer avec eux. Prenez celles qui sont plus facilement comprises pour les fonctions et essayez-les. Faites la même chose avec des données (cela peut aider à examiner la sortie de l'assemblage de GCC pour cela, mais __ attribut __ code> ne fait pas partie de C, mais est une extension de GCC utilisée pour transmettre des informations spéciales au compilateur. La syntaxe de
__ attribut __ code> a été choisie pour être quelque chose que le prétraiteur C accepterait et non modifier (par défaut, de toute façon), il ressemble beaucoup à un appel de la fonction. Ce n'est pas un appel de fonction, cependant. P>
__ attribut __ code> de différentes manières - même en utilisant la même pièce de données de plusieurs manières, parfois. p>
pure code> indique au compilateur qu'une fonction est en réalité une fonction mathématique - en utilisant uniquement ses arguments et les règles de la langue pour arriver à sa réponse sans aucun autre effet secondaire. En sachant que le compilateur peut être capable d'optimiser mieux lorsque vous appelez une fonction pure, mais il peut également être utilisé lors de la compilation de la fonction pure pour vous avertir si la fonction fait quelque chose qui le rend impur. P>
taille de code> et la vérification de l'alignement aidera souvent). P>
Vous avez une très bonne explication ici: GCC.GNU.ORG/ONLINDOCS/GCC/ Fonction-attributs.html . La question est. De quoi en avez-vous besoin exactement? Cela aiderait.
Essayez de poster un exemple spécifique que vous rencontrez des difficultés à comprendre
Allez-y Unixwiz.net/techtips/gnu-c-attributes.html
... et notez que ce n'est pas c, il s'agit du compilateur GCC. Utiliser Attribut B> n'est pas portable.
La GCC a été suffisamment influente que les gccismes soient soutenus par d'autres compilateurs.
Clang CODE> prend en charge un certain nombre d'attributs GCC et
PCC CODE> semble avoir un support partiel pour eux.