Je suis curieux de connaître le comportement du spécificateur de stockage register
en C/C++
. Programme suivant valide dans C++
, mais dans le cas de C
ce n'est pas valide.Enregistrer le spécificateur de stockage en C++
int main()
{
register int i;
int* b = &i; // Valid in C++ but not in C
}
Alors, ma question I, Pourquoi l'opérateur d'adresse permis C++ (&) à une variable de registre?
P.S: Je sais Le registre est déprécié dans le compilateur moderne.
Il est * suggéré * au compilateur de placer la variable dans le registre, car le programmeur s'attend à un accès plus rapide à cette variable. Mais cela ne le * force * pas. –
Quelle que soit la raison pour laquelle vous avez ajouté la balise C à une question C++? Ce sont des langues différentes! – Olaf
Ceci est une réponse vraiment ennuyeuse, mais "parce que la norme C++ le dit". Il dit que le mot-clé 'register' est un" indice de l'implémentation que la variable ainsi déclarée sera fortement utilisée ", et" dans la plupart des implémentations seront ignorés si l'adresse de la variable est prise ". –