Ich habe eine Funktion, die ein Array von Zeigern wie folgt empfängt:
%Vor% Was ich dem Compiler mitteilen möchte ist, dass die Zeiger ptrs[i]
keine Aliase voneinander sind und dass sich die Arrays ptrs[i]
nicht überlappen. Wie soll ich das machen? Mein Hintergedanke ist die automatische Vektorisierung zu fördern.
Gibt es auch eine Möglichkeit, den gleichen Effekt wie __restrict__
für einen Iterator von std::vector
zu erhalten?
restrict
ist im Gegensatz zu der häufigeren const
eine Eigenschaft des -Zeigers und nicht die -Daten, die auf verweisen. Es gehört daher auf die Seite rechts des deklarator-modifier ' *
'. []
in einer Parameterdeklaration ist eine andere Möglichkeit, *
zu schreiben. Wenn Sie diese Dinge zusammenfügen, sollten Sie mit diesem Funktionsprototyp den gewünschten Effekt erzielen:
und keine Notwendigkeit für neue Namen. (Nicht getestet. Ihre Laufleistung kann variieren.% Co_de% ist ein reiner Optimierungshinweis und kann eigentlich nichts konstruktiv mit Ihrem Compiler machen.)
Tags und Links c c++ pointers aliasing restrict-qualifier