570 Stimmen

Warum wird volatile in C benötigt?

Warum ist volatile in C benötigt? Wofür wird es verwendet? Was wird es tun?

3voto

Ori Pessach Punkte 6700

Eine flüchtige Variable kann von außerhalb des kompilierten Codes geändert werden (z. B. kann ein Programm eine flüchtige Variable einem im Speicher abgebildeten Register zuordnen). Der Compiler wird bestimmte Optimierungen nicht auf Code anwenden, der eine flüchtige Variable behandelt - zum Beispiel wird er sie nicht in ein Register laden, ohne sie in den Speicher zu schreiben. Dies ist wichtig für den Umgang mit Hardware-Registern.

0voto

Siddharth Punkte 311

Wie von vielen hier zu Recht vorgeschlagen, wird das Schlüsselwort volatile häufig verwendet, um die Optimierung der flüchtigen Variablen zu überspringen.

Der beste Vorteil, der mir in den Sinn kommt und der nach der Lektüre von "Volatile" erwähnenswert ist, besteht darin, dass zurückdrehend der Variablen im Falle einer longjmp . Ein nichtlokaler Sprung.

Was bedeutet das?

Es bedeutet einfach, dass der letzte Wert beibehalten wird, nachdem Sie Stapelabwicklung um zu einem früheren Stack-Frame zurückzukehren; typischerweise im Falle eines fehlerhaften Szenarios.

Da es den Rahmen dieser Frage sprengen würde, gehe ich nicht auf Einzelheiten ein setjmp/longjmp hier, aber es lohnt sich, darüber zu lesen; und wie die Volatilitätsfunktion verwendet werden kann, um den letzten Wert beizubehalten.

-4voto

venu Punkte 11

Der Compiler kann die Werte von Variablen nicht automatisch ändern. Eine flüchtige Variable ist für den dynamischen Gebrauch bestimmt.

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