Kurze Antwort: Nein.
Ich bin jedoch nicht bekannt, dass Situation, in der der konservativen Ansatz des Compilers wird die Nummer ändern von liest oder schreibt, wenn Sie diesen Ansatz folgen:
Wenn ein verkanten sichtbare Stelle zu lesen, speichern ihre Wert für einen Local, bevor weitere Manipulationen vorgenommen werden; In ähnlicher Weise beschränken Sie Schreibvorgänge auf eine einzelne Zuweisung.
Der Delphi-Compiler führt keine allgemeine Teilausdruck-Eliminierung (CSE) für nichtlokale Ortsausdrücke durch, wenn Aufrufe zwischen den Ausdrücken auf Nicht-Inlined-Methoden erfolgen, da der Compiler keine prozedurale Optimierung durchführt Korrigieren Sie sogar für single-threaded Code.
Sie möchten also InterlockedExchange() verwenden, um Ihre Lese- und Schreibvorgänge zu erzwingen; Darüber hinaus führt dies zu einer vollständigen Speicherbarriere, sodass der Prozessor die Lese- und Schreibvorgänge nicht neu anordnet.
Absolute führt einen Alias ein, einen anderen Namen (und möglicherweise Typ) für den gleichen Ort. –
Wenn ich fragen darf, warum wird das gebraucht? Vielleicht gibt es einen anderen Weg zu tun, was Sie brauchen. – Bernard
Ein Mitarbeiter war nur neugierig. Ich habe ihn dasselbe gefragt (warum). Ich sagte ihm, was ich dachte, aber dass ich wusste, wie ich es herausfinden sollte. –