__restrict
Wie der __declspec
( restrict
) Modifizierer gibt die __restrict
Schlüsselwort (keyword) (zwei führende Unterstriche '_' ) an, dass ein Symbol nicht im aktuellen Bereich aliast ist. Die __restrict
Schlüsselwort (keyword) unterscheidet sich von dem __declspec (restrict)
Modifizierer auf folgende Weise:
Die
__restrict
Schlüsselwort (keyword) ist nur für Variablen gültig und__declspec (restrict)
gilt nur für Funktionsdeklarationen und Definitionen.__restrict
ist vergleichbarrestrict
mit C ab C99 und ist im/std:c11
oder/std:c17
Modus verfügbar, kann aber__restrict
sowohl in C++- als auch in C-Programmen verwendet werden.Wenn
__restrict
der Compiler verwendet wird, wird die No-Alias-Eigenschaft einer Variablen nicht weitergegeben. Wenn Sie einer Nichtvariablen__restrict
eine__restrict
Variable zuweisen, lässt der Compiler weiterhin zu, dass die Variable ohne __restrict aliasiert wird. Dies unterscheidet sich vom Verhalten der C99 C-Spracherestrict
Schlüsselwort (keyword).
Wenn Sie das Verhalten einer gesamten Funktion beeinflussen möchten, verwenden __declspec (restrict)
Sie im Allgemeinen anstelle der Schlüsselwort (keyword).
Aus Gründen der Kompatibilität mit früheren Versionen _restrict
ist ein Synonym für __restrict
die Angabe der Compileroption /Za
(Sprachenerweiterungen deaktivieren).
In Visual Studio 2015 und höher __restrict
können sie für C++-Verweise verwendet werden.
Hinweis
Wenn sie für eine Variable mit dem volatile
Schlüsselwort (keyword) verwendet wird, volatile
hat dies Vorrang.
Beispiel
// __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;
};
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für