Share via


__restrict

come restrict __declspec modificatore, __restrict la parola chiave indica che un simbolo non viene utilizzato un alias nell'ambito corrente.__restrict la parola chiave è diverso da restrict __declspec modificatore nei modi seguenti:

  • __restrict la parola chiave è valida solo per variabili e __declspec(restrict) è valido solo nelle dichiarazioni di funzione e le definizioni.

  • quando __restrict viene utilizzato, il compilatore non verrà trasferita la proprietà privi di alias di una variabile.Ovvero se si assegna un oggetto __restrict variabile a un non__restrict la variabile, il compilatore non implicherà che il non__restrict la variabile non viene utilizzato un alias.Ciò è diverso dal comportamento di restrict parola chiave dalla specifica di C99.

In generale, se interessate il comportamento dell'intera funzione, è preferibile utilizzare __declspec la parola chiave.

__restrict è simile a restrict dalla specifica. di C99, ma __restrict può essere utilizzato nei programmi C O C++.

Nessun supporto __restrict i riferimenti C++. 

[!NOTA]

Una volta utilizzato su una variabile che presenta inoltre volatile (C++) parola chiave, volatile avrà la precedenza.

Esempio

// __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;
};

Vedere anche

Riferimenti

Parole chiave C++