Compartir a través de


__restrict

Como el modificador de restrict__declspec , la palabra clave de __restrict indica que un token no es con alias en el ámbito actual.La palabra clave de __restrict difiere del modificador de restrict __declspec de las maneras siguientes:

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

  • cuando se utiliza __restrict , el compilador no difundirá la propiedad de ninguno-alias de una variable.Es decir, si se asigna una variable de __restrict a una variable que no es de__restrict , el compilador no implicará que la variable no de__restrict no es con alias.Esto es diferente del comportamiento de la palabra clave de restrict de la especificación C99.

Normalmente, si afecta al comportamiento de una función completa, es mejor utilizar __declspec que la palabra clave.

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

No hay compatibilidad con __restrict en referencias de C++. 

[!NOTA]

Cuando se utiliza en una variable que tenga la palabra clave de 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++