Compartir a través de


__restrict

Como el modificador restrict __declspec, la palabra clave __restrict indica que un símbolo no tiene un alias en el ámbito actual. La palabra clave __restrict difiere del modificador restrict __declspec en lo siguiente:

  • La palabra clave __restrict solo es válida en variables y __declspec(restrict) solo es válido en declaraciones de función y definiciones.

  • Cuando se utiliza __restrict, el compilador no propagará la propiedad sin alias de una variable. Es decir, si se asigna una variable __restrict a una variable que no es __restrict, el compilador no supondrá que la variable no __restrict no tiene alias. Este comportamiento es diferente del de la palabra clave restrict de la especificación C99.

Normalmente, si se modifica el comportamiento de una función completa, es mejor utilizar __declspec que la palabra clave.

__restrict es similar a restrict de la especificación C99, pero __restrict se puede utilizar en programas de C++ o C.

No se admite __restrict en las referencias de C++. 

Nota

Cuando se utiliza en una variable que tiene también la palabra clave volatile (C++), volatile tendrá prioridad.

Ejemplo

// __restrict_keyword.c
// compile with: /LD
// In the following function, declare a and b as disjoint arrays
// but do not have same assurance for c and d.
void sum2(int n, int * __restrict a, int * __restrict b, 
          int * c, int * d) {
   int i;
   for (i = 0; i < n; i++) {
      a[i] = b[i] + c[i];
      c[i] = b[i] + d[i];
    }
}

// By marking union members as __restrict, tell compiler that
// only z.x or z.y will be accessed in any given scope.
union z {
   int * __restrict x;
   double * __restrict y;
};

Vea también

Referencia

Palabras clave de C++