registrarse (palabra clave)

Palabra reservada en el lenguaje de programación C

En el lenguaje de programación C , registeres una palabra reservada (o palabra clave), modificador de tipo, clase de almacenamiento y sugerencia. La registerpalabra clave quedó obsoleta en C++ , hasta que se volvió reservada y no se usó en C++17 . Sugiere que el compilador almacene una variable declarada en un registro de CPU (o alguna otra ubicación más rápida) en lugar de en la memoria de acceso aleatorio . Si es posible, dependiendo del tipo de CPU y la complejidad del código del programa, optimizará el acceso a esa variable y, por lo tanto, mejorará el tiempo de ejecución de un programa. En C (pero no en C++, donde la palabra clave se ignora esencialmente), no se puede acceder a la ubicación de una variable declarada con, pero se puede aplicar el operador. [1] Aparte de esta limitación, esencialmente no tiene sentido en los compiladores modernos debido a la optimización que colocará las variables en un registro si es apropiado independientemente de si se da la sugerencia. [ cita requerida ] Para la programación de sistemas integrados aún puede ser significativo; por ejemplo, el compilador Microchip MPLAB XC32 permite al programador especificar un registro particular con la palabra clave; sin embargo, esto se desaconseja a favor de las optimizaciones del compilador. [2] Cuando se utiliza, normalmente es para contadores de bucle o posiblemente para otras variables utilizadas con mucha frecuencia en el código.registersizeofregisterregisterregister

Ejemplos

/* almacena la variable entera "i" en RAM, registro u otra ubicación que el compilador considere conveniente */ int i ;  /* sugiere almacenar la variable entera "i" en un registro de CPU u otra ubicación rápida */ register int i ;  

Véase también

Referencias

  1. ^ "NOMA INTERNACIONAL ISO/IEC 9899:TC2" (PDF) .
  2. ^ "Guía del usuario del compilador C/C++ MPLAB® XC32" (PDF) . pág. 170.
Obtenido de "https://es.wikipedia.org/w/index.php?title=Registrarse_(palabra clave)&oldid=1251611604"