Exporter (0) Imprimer
Développer tout
Cet article a fait l'objet d'une traduction automatique. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte. Informations supplémentaires.
Traduction
Source

__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 Remarque

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

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

Ajouts de la communauté

AJOUTER
Afficher:
© 2014 Microsoft