Register (keyword)

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

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

* Optimizing compiler
* Program optimization
* Static (keyword)

## References

1. ↑ "INTERNATIONAL STANDARD ISO/IEC 9899:TC2". http://www.open-std.org/jtc1/sc22/wg14/www/docs/n1124.pdf.
2. ↑ "MPLAB® XC32 C/C++ Compiler User's Guide". p. 170. http://ww1.microchip.com/downloads/en/DeviceDoc/50001686J.pdf.

0.00

(0 votes)

Original source: https://en.wikipedia.org/wiki/Register (keyword). Read more

|

Retrieved from "https://handwiki.org/wiki/index.php?title=Register_(keyword)&oldid=220224"