¿Palabra clave "registro" en C?
¿Qué hace la register
palabra clave en lenguaje C? He leído que se utiliza para optimizar pero no está claramente definido en ningún estándar. ¿Sigue siendo relevante y, de ser así, cuándo lo usaría?
Es una pista para el compilador de que la variable se utilizará mucho y que, si es posible, recomienda que se mantenga en un registro del procesador.
La mayoría de los compiladores modernos lo hacen automáticamente y son mejores que nosotros los humanos para seleccionarlos.
Me sorprende que nadie haya mencionado que no se puede tomar una dirección de una variable de registro, incluso si el compilador decide mantener la variable en la memoria en lugar de en el registro.
Por lo tanto, al usarlo register
no se gana nada (de todos modos, el compilador decidirá por sí mismo dónde colocar la variable) y se pierde el &
operador, no hay razón para usarlo.
Le indica al compilador que intente utilizar un registro de la CPU, en lugar de RAM, para almacenar la variable. Los registros están en la CPU y su acceso es mucho más rápido que la RAM. Pero es sólo una sugerencia para el compilador y es posible que no se cumpla.