Bislang dachte ich eigentlich, ich hätte die Funktion des Keywords restrict soweit verstanden, doch nun beschleichen mich einige Zweifel, ob meine Vorstellungen so tatsächlich den Realitäten entsprechen.
Wovon ich bislang ausging
Gegeben seien folgende zwei Beispiele
Code: Alles auswählen
void foo(int *a, int *b)
{
int x, y;
x = *a;
*b = 7;
y = *a;
return;
}
Code: Alles auswählen
void foo(int * restrict a, int *b)
{
int x, y;
x = *a;
*b = 7;
y = *a;
return;
}
Stimmt das denn so?
Etwas verunsichert hat mich diesbezüglich "Handmade Hero Day 005" (Casey Muratori) https://youtu.be/w7ay7QXmo_o?si=sRBu0qP7JdY7jz0Z&t=6627.
Zwar geht er mit einem sehr ähnlichen Beispiel auf die Problematik von "pointer aliasing" ein, doch er erwähnt restrict nur beiläufig gegen Ende - und nicht als Lösung des Problems - wovon ich eigentlich dachte, dass es das sei!