16 Stimmen

C++11 ohne Sequenzpunkt?

Wikipedia sagt, dass Sequenzpunkte in C++11 veraltet sind. Was bedeutet das? Bedeutet das, dass undefinierte Verhaltensweisen aufgrund von Sequenzpunkten keine Auswirkungen haben?

10voto

supercat Punkte 72939

Ein großes Problem mit dem Begriff "Sequenzpunkt" ist, dass er eine Art von absoluter Sequenzierung suggeriert, die es nie gab. Betrachten Sie den Ausdruck a = (b(),c()) + d(); Es gibt einen Sequenzpunkt zwischen b() y c() aber das bedeutet nicht, dass alles andere als klar vor der Zeit beschrieben werden kann. c() oder deutlich nach b() . Es wäre möglich, dass b() , c() und d() zu bewerten in der Reihenfolge bcd , bdc o dbc . Die Terminologie der "Sequenz"-Punkte machte das nicht wirklich deutlich, aber die neuere Terminologie schon.

9voto

J. Calleja Punkte 4765

Der Begriff "Sequenzpunkt" ist veraltet, um eine klarere Erklärung zu geben. Die Sprache C++ sollte sich nicht ändern.

Weitere Informationen finden Sie unter aquí

8voto

Jerry Coffin Punkte 452852

Die Formulierung "Sequenzpunkt" wurde zugunsten eindeutigerer Formulierungen wie "sequenziert vor" veraltet. Sequenzpunkte waren bereits schwer zu verstehen. Durch die Hinzufügung von Multithreading ist es fast unmöglich, mit ihnen umzugehen, daher wurden sie (zumindest größtenteils) zugunsten anderer Formulierungen abgeschafft.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X