Pagina didattica di G. Servizi
Home >> Linguaggio C++ >> vocabolario C++


livello alto

register

Quasi mai usata, serve a suggerire al compilatore la preferenza a memorizzare una variabile direttamente nei registri del processore, e questo perché si pensa che tale variabile sia frequentissimamente utilizzata: la sua memorizzazione diretta nei registri del processore renderebbe quindi molto più efficiente l'esecuzione del codice.

Di fatto, poiché il numero di registri disponibili dipende dal tipo del processore, non si ha alcun controllo sull'effettiva aderenza alla richiesta di memorizzazione così formulata, che potrebbe anche non essere accolta; in tal caso la variabile verrebbe memorizzata come se register non fosse stato specificato.

D'altro canto, effettuando la compilazione del codice con qualche opzione di ottimizzazione, il compilatore provvede da sé a memorizzare le variabili per l'appunto in modo ottimale. Ne consegue la seguente

MORALE: ma perché usarla?

Esempio d'uso:

register int ciccio;

Con questa dichiarazione si vorrebbe che la variabile intera ciccio venisse memorizzata direttamente nei registri del processore.

Nello standard 2017 questa parola, pur rimanendo parte del vocabolario e quindi non utilizzabile come nome per i propri identificatori, è stata definitivamente sepolta ed è quindi priva di qualsiasi significato utile. La ragione per cui è stata mantenuta comunque nel vocabolario è la salvaguardia della retro-compatibilità con codici provenienti dal C ANSI che ne facessero uso: in tale linguaggio conserva infatti il significato, per quanto miserando, descritto in questo documento.

Torna in cima alla pagina