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.
/* 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;
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.
/* 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;