Quelle est la différence entre
int x=7;
et
register int x=7;
?
J'utilise C ++.
Quelle est la différence entre
int x=7;
et
register int x=7;
?
J'utilise C ++.
register
est un indice pour le compilateur, conseillant de stocker cette variable dans un registre du processeur au lieu de la mémoire (par exemple, au lieu de la pile).
Le compilateur peut suivre ou non cette indication.
J'ai trouvé ça traîner par ici :
Un spécificateur de registre a la même sémantique qu'un spécificateur automatique ...
Selon Herb Sutter , il est " exactement aussi significatif que les espaces " .
En C ++, tout programme valide utilisant les mots-clés "auto" ou "register" sera sémantiquement identique à celui dont les mots-clés ont été supprimés (à moins qu'ils n'apparaissent dans des macros stringées ou dans d'autres contextes similaires). En ce sens, les mots-clés sont inutiles pour bien compiler des programmes. D'autre part, les mots-clés peuvent être utiles dans certains contextes de macros pour garantir qu'une utilisation incorrecte d'une macro provoquera une erreur lors de la compilation plutôt que de générer un code factice.
Presque certainement rien.
register
indique au compilateur que vous prévoyez d'utiliser x
beaucoup et que vous pensez qu'il devrait être placé dans un registre.
Cependant, les compilateurs sont maintenant bien plus aptes à déterminer quelles valeurs doivent être placées dans les registres que le programmeur moyen (ou même expert), aussi les compilateurs ignorent-ils simplement le mot clé et font-ils ce qu'ils veulent.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.