IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Fonctionnalités C++ modernes - Les attributs,
Un tutoriel de Arne Mertz, traduit par MaximeCh

Le , par Malick

77PARTAGES

11  0 
Chers membres du club,

J'ai le plaisir de vous présenter ce tutoriel d'Arne Mertz :

Fonctionnalités C++ modernes - Les attributs
La standardisation grandissante des attributs permet d’écrire un code plus clair, pour les humains, comme pour les compilateurs et autres outils.
Les attributs sont une façon standard de gérer les extensions jusqu’à présent non standards des compilateurs.
Pas clair ? Jetons un œil au fonctionnement de certaines extensions de compilateurs.
Mis à part les extensions de grande envergure qui chamboulent complètement le langage, nombre de compilateurs permettent d’ajouter des annotations aux fonctions, variables, classes, etc.

Souvent, ces extensions sont de purs ajouts : en les enlevant, on retrouve du C++ tout ce qu’il y a de plus classique.
Les identifiants contenant des underscores doubles sont courants, car ils sont réservés à l’implémentation : pas de risque de conflit en portant du C++ standard vers un autre compilateur.

Un exemple est l’annotation cpp __fastcall de MSVC qui indique au compilateur de passer les deux premiers arguments – pourvu qu’ils prennent une taille maximum donnée, en registre, sur les architectures x86.

L’équivalent chez GCC requiert d’écrire cpp __attribute__((fastcall)).

Le problème apparaît déjà : aucune standardisation des extensions compilateur n’existe avant C++11.
Deux compilateurs différents utiliseront des annotations différentes, ce qui rend le code non portable, à moins d’utiliser des macros de préprocesseur.

Bonne lecture

Retrouvez les meilleurs cours et tutoriels pour apprendre la programmation C++

Une erreur dans cette actualité ? Signalez-nous-la !