Register (Keyword)

From Handwiki

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. 



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

Categories: [C (programming language)] [Variable (computer science)]


Download as ZWI file | Last modified: 03/16/2024 21:50:07 | 26 views
☰ Source: https://handwiki.org/wiki/Register_(keyword) | License: CC BY-SA 3.0

ZWI is not signed. [what is this?]