register (keyword)

From Wikipedia, the free encyclopedia

In the C programming language, register is a reserved word (or keyword), type modifier, storage class, and hint. The register keyword was deprecated in C++, until it became reserved and unused in C++17. It suggests that the compiler stores a declared variable in a CPU register (or some other faster location) instead of in random-access memory. If possible depending on the type of CPU and complexity of the program code, it will optimize access to that variable and hence improve the execution time of a program. In C (but not C++ where the keyword is essentially ignored) the location of a variable declared with register cannot be accessed, but the sizeof operator can be applied.[1] Aside from this limitation, register is essentially meaningless in modern compilers due to optimization which will place variables in a register if appropriate regardless of whether the hint is given.[citation needed] For programming of embedded systems register may still be significant; for example the Microchip MPLAB XC32 compiler allows the programmer to specify a particular register with the keyword; however, this is discouraged in favor of the compiler's optimizations.[2] When used, register is typically for loop counters, or possibly for other very frequently used variables in the code.

Examples[edit]

/* store integer variable "i" in RAM, register, or other location as compiler sees fit */
int i;   

/* suggests storing integer variable "i" in a CPU register or other fast location */
register int i;

See also[edit]

References[edit]

  1. ^ "INTERNATIONAL STANDARD ISO/IEC 9899:TC2" (PDF).
  2. ^ "MPLAB® XC32 C/C++ Compiler User's Guide" (PDF). p. 170.