__restrict
Comme le __declspec
modificateur ( restrict
) modificateur, le __restrict
mot clé (deux traits de soulignement de début '_') indique qu’un symbole n’est pas alias dans l’étendue actuelle. Le __restrict
mot clé diffère du __declspec (restrict)
modificateur de la manière suivante :
Le
__restrict
mot clé est valide uniquement sur les variables et__declspec (restrict)
n’est valide que sur les déclarations de fonction et les définitions.__restrict
est similaire àrestrict
C à partir de C99 et disponible en/std:c11
mode,/std:c17
mais__restrict
peut être utilisé dans les programmes C++ et C.Lorsqu’il
__restrict
est utilisé, le compilateur ne propage pas la propriété no-alias d’une variable. Autrement dit, si vous affectez une__restrict
variable à une variable non-variable__restrict
, le compilateur autorise toujours l’alias de la variable non-__restrict. Cela diffère du comportement du langagerestrict
C99 C mot clé.
En règle générale, si vous souhaitez affecter le comportement d’une fonction entière, utilisez __declspec (restrict)
plutôt que le mot clé.
Pour la compatibilité avec les versions précédentes, _restrict
est un synonyme de __restrict
l’option /Za
du compilateur (Désactiver les extensions de langage) spécifiée.
Dans Visual Studio 2015 et versions ultérieures, __restrict
vous pouvez utiliser des références C++.
Remarque
Lorsqu’elle est utilisée sur une variable qui a également la volatile
mot clé, volatile
elle 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
Commentaires
https://aka.ms/ContentUserFeedback.
Bientôt disponible : Tout au long de 2024, nous allons supprimer progressivement GitHub Issues comme mécanisme de commentaires pour le contenu et le remplacer par un nouveau système de commentaires. Pour plus d’informations, consultezEnvoyer et afficher des commentaires pour