95 votes

Enregistrer le mot clé en C ++

Quelle est la différence entre

 int x=7;
 

et

 register int x=7;
 

?

J'utilise C ++.

100voto

Tom Points 16783

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 ...

48voto

Fred Larson Points 27404

27voto

supercat Points 25534

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.

26voto

KeithB Points 9459

Avec les compilateurs actuels, probablement rien. C'était initialement un indice pour placer une variable dans un registre pour un accès plus rapide, mais la plupart des compilateurs ignorent aujourd'hui cet indice et décident eux-mêmes.

10voto

James Curran Points 55356

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.com

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.

Powered by:

X