__restrict
Come il __declspec
modificatore ( restrict
) , la __restrict
parola chiave (due caratteri di sottolineatura iniziali '_') indica che un simbolo non è aliasato nell'ambito corrente. La __restrict
parola chiave differisce dal __declspec (restrict)
modificatore nei modi seguenti:
La
__restrict
parola chiave è valida solo per le variabili ed__declspec (restrict)
è valida solo per le dichiarazioni e le definizioni di funzione.__restrict
è simile arestrict
per C a partire da C99 e disponibile in/std:c11
modalità o/std:c17
, ma__restrict
può essere usato sia nei programmi C++ che in C.Quando
__restrict
viene usato, il compilatore non propaga la proprietà no-alias di una variabile. Ciò significa che, se si assegna una__restrict
variabile a una variabile non__restrict
, il compilatore consentirà comunque l'aliasing della variabile non __restrict. Questo comportamento è diverso dal comportamento della parola chiave del linguaggiorestrict
C99.
In genere, se si vuole influire sul comportamento di un'intera funzione, usare __declspec (restrict)
anziché la parola chiave .
Per la compatibilità con le versioni precedenti, _restrict
è un sinonimo di __restrict
a meno che non sia specificata l'opzione /Za
del compilatore (Disabilita estensioni del linguaggio).
In Visual Studio 2015 e versioni successive è __restrict
possibile usare i riferimenti A C++.
Nota
Se usata in una variabile che ha anche la parola chiave , volatile
avrà la volatile
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;
};
Vedi anche
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per