0 Tage Serie
c / intermediate
Snippet

Der restrict-Zeiger-Qualifizierer

Das Schlüsselwort 'restrict' ist ein Hinweis an den Compiler, dass der Zeiger der einzige Weg ist, auf die zugrunde liegenden Daten zuzugreifen. Dies verhindert Aliasing und ermöglicht aggressive Optimierungen wie Vektorisierung.

snippet.c
c
1
2
3
4
5
void vector_add(int * restrict a, int * restrict b, int * restrict res, int n) {
for (int i = 0; i < n; i++) {
res[i] = a[i] + b[i];
}
}
Erklärung
1
int * restrict a
Informiert den Compiler, dass 'a' sich nicht mit 'b' oder 'res' überschneidet.
2
res[i] = a[i] + b[i];
Da kein Aliasing auftritt, kann der Compiler diese Operationen sicher umordnen oder vektorisieren.