Partager via


__restrict

Comme le modificateur de restrict__declspec , le mot clé d' __restrict indique qu'un symbole pas alias dans la portée actuelle.Le mot clé d' __restrict diffère du modificateur d' restrict __declspec des façons suivantes :

  • Le mot clé d' __restrict est valide uniquement sur les variables, et __declspec(restrict) n'est valide que dans les déclarations de fonction et des définitions.

  • Lorsque __restrict est utilisé, le compilateur ne sera propagée pas la propriété de ce type alias d'une variable.Autrement dit, si vous assignez une variable d' __restrict à une variable non d'__restrict , le compilateur n'impliquera pas que la variable est possible d'__restrict pas alias.c'est différent du comportement du mot clé d' restrict de la spécification de C99.

En général, si vous assignez le comportement d'une fonction complète, il est préférable d'utiliser __declspec que le mot clé.

__restrict est semblable à restrict de la spécification de C99, mais __restrict peut être utilisé dans des programmes C ou C++.

Il n'existe aucune prise en charge d' __restrict sur les références C++. 

[!REMARQUE]

Lorsque utilisé sur une variable qui a également le mot clé volatile, volatile est prioritaire.

Exemple

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

Voir aussi

Référence

Mots clés C++