restringir palabra clave en C

En el lenguaje de programación C (después del estándar 99), se introduce una nueva palabra clave conocida como restrict. 
 

  • La palabra clave restrict se usa principalmente en declaraciones de punteros como un calificador de tipo para punteros.
  • No añade ninguna funcionalidad nueva. Es solo una forma para que el programador informe sobre una optimización que puede hacer el compilador.
  • Cuando usamos restrict con un puntero ptr, le dice al compilador que ptr es la única forma de acceder al objeto señalado por él, en otras palabras, no hay otro puntero que apunte al mismo objeto, es decir, la palabra clave restrict especifica que un argumento de puntero en particular no no es un alias de ningún otro y el compilador no necesita agregar ninguna verificación adicional.
  • Si un programador usa la palabra clave restrict y viola la condición anterior, el resultado es un comportamiento indefinido.
  • restrict no es compatible con C++. Es una palabra clave solo de C.

C

// C program to use restrict keyword.
#include <stdio.h>
 
// Note that the purpose of restrict is to
// show only syntax. It doesn't change anything
// in output (or logic). It is just a way for
// programmer to tell compiler about an
// optimization
void use(int* a, int* b, int* restrict c)
{
    *a += *c;
 
    // Since c is restrict, compiler will
    // not reload value at address c in
    // its assembly code. Therefore generated
    // assembly code is optimized
    *b += *c; 
}
 
int main(void)
{
    int a = 50, b = 60, c = 70;
    use(&a, &b, &c);
    printf("%d %d %d", a, b, c);
    return 0;
}

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *