<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[volatile? __cdecl?]]></title><description><![CDATA[<p>hallo Leutz,</p>
<p>ich programmiere ja schon ne ganze Weile in C++ und habe da<br />
jetzt mal'n paar Fragen.</p>
<p>und zwar frage ich mich, was volatile und __cdecl bewirken.<br />
bei __cdecl glaube ich, hat es was mit den Parametern zu tun, wenn man mehrer<br />
Programmiersprachen kombiniert, die unterschiedliche Aufrufkonventionen haben.<br />
bin mir da aber nicht sicher.</p>
<p>und mit volatile kann ich ehrlich gesagt gar nichts anfangen.</p>
<p>also würde mich über Hilfe freuen.</p>
<p>MfG DrakoXP</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/169337/volatile-__cdecl</link><generator>RSS for Node</generator><lastBuildDate>Wed, 16 Sep 2026 17:04:24 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/169337.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 04 Jan 2007 13:59:18 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to volatile? __cdecl? on Thu, 04 Jan 2007 13:59:18 GMT]]></title><description><![CDATA[<p>hallo Leutz,</p>
<p>ich programmiere ja schon ne ganze Weile in C++ und habe da<br />
jetzt mal'n paar Fragen.</p>
<p>und zwar frage ich mich, was volatile und __cdecl bewirken.<br />
bei __cdecl glaube ich, hat es was mit den Parametern zu tun, wenn man mehrer<br />
Programmiersprachen kombiniert, die unterschiedliche Aufrufkonventionen haben.<br />
bin mir da aber nicht sicher.</p>
<p>und mit volatile kann ich ehrlich gesagt gar nichts anfangen.</p>
<p>also würde mich über Hilfe freuen.</p>
<p>MfG DrakoXP</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202737</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202737</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Thu, 04 Jan 2007 13:59:18 GMT</pubDate></item><item><title><![CDATA[Reply to volatile? __cdecl? on Thu, 04 Jan 2007 14:03:10 GMT]]></title><description><![CDATA[<p>__cdecl ist afaik eine Compiler-Erfindung und kennzeichnet die Aufrufkonvention einer Funktion (Verteilung der Parameter, Aufräumen des Stacks, etc) - daneben gibt es noch __stdcall oder __fastcall.</p>
<p>volatile kennzeichnet, daß eine gegebene Variable sich auch außerhalb des normalen Programmablaufs ändern könnte. Das schaltet z.B. einige Optimierungen aus.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202741</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202741</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Thu, 04 Jan 2007 14:03:10 GMT</pubDate></item><item><title><![CDATA[Reply to volatile? __cdecl? on Thu, 04 Jan 2007 15:48:31 GMT]]></title><description><![CDATA[<p>das heißt, volatile müsste ich verwenden, wenn ich mit mehreren Threads auf eine globale Variable zugreifen möchte?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202860</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202860</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Thu, 04 Jan 2007 15:48:31 GMT</pubDate></item><item><title><![CDATA[Reply to volatile? __cdecl? on Thu, 04 Jan 2007 16:04:41 GMT]]></title><description><![CDATA[<p>__cdecl ist ein reservierter Bezeichner. Was er tut, wenn er denn existiert, mußt du den Compilerhersteller fragen</p>
<p>volatile führt dazu, dass Lese- und Schreibzugriffe (was nicht exakt definiert wird) &quot;observable behaviour&quot; darstellen. Somit werden Umordnung oder Eliminierung dieser Vorgänge untereinander entsprechend der &quot;as-if&quot; Regel ausgeschlossen. Das hat primär den Zweck, Veränderungen solcher Variablen, die nicht durch das Programm bewirkt werden (etwa wenn wir irgendwelche Geräte direkt steuern) zu ermöglichen. Die Erklärung von CStoll ist insofern verkehrt herum, denn Letzteres ist Folge und nicht Ursache von Ersterem. Andernfalls kommt man leicht auf den Gedanken, volatile etwa zum Datenaustausch zwischen Threads zu benutzen, dafür ist volatile aber ungeeignet (weil die Einschränkungen zu schwach sind). Im Zusammenhang mit volatile besteht eine Inkompatibilität mit C. In C++ Kann eine Zuweisung zu einer volatile Variablen zu einem Lesevorgang auf dieser Variablen führen.</p>
<pre><code class="language-cpp">int a;
volatile int b;
a = b = 5;
</code></pre>
<p>In C hat a hier nach der Zuweisung mit Sicherheit den Wert 5. In C++ ist das nicht unbedingt so. Denn hier ist das Ergebnis einer Zuweisung ein <em>lvalue</em>, der rechte Operand dagegen ein <em>rvalue</em>, die nötige Umwandlung von lvalue zu rvalue ist aber das, was für gewöhnlich zu einem Lesevorgang führt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202868</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202868</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 04 Jan 2007 16:04:41 GMT</pubDate></item><item><title><![CDATA[Reply to volatile? __cdecl? on Thu, 04 Jan 2007 17:59:15 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<p>Im Zusammenhang mit volatile besteht eine Inkompatibilität mit C. In C++ Kann eine Zuweisung zu einer volatile Variablen zu einem Lesevorgang auf dieser Variablen führen.</p>
<pre><code class="language-cpp">int a;
volatile int b;
a = b = 5;
</code></pre>
<p>In C hat a hier nach der Zuweisung mit Sicherheit den Wert 5. In C++ ist das nicht unbedingt so. Denn hier ist das Ergebnis einer Zuweisung ein <em>lvalue</em>, der rechte Operand dagegen ein <em>rvalue</em>, die nötige Umwandlung von lvalue zu rvalue ist aber das, was für gewöhnlich zu einem Lesevorgang führt.</p>
</blockquote>
<p>Heißt das soviel wie, dass zwischen der Zuweisung von 5 an b und der von b an a sich der Wert von b ändern könnte (außerhalb des Programms) und somit a den neuen Wert von b zugeweisen bekommt wohingegen in C der alte Wert von b (also 5) verwendet werden würde?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1202948</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1202948</guid><dc:creator><![CDATA[HumeSikkins]]></dc:creator><pubDate>Thu, 04 Jan 2007 17:59:15 GMT</pubDate></item><item><title><![CDATA[Reply to volatile? __cdecl? on Thu, 04 Jan 2007 21:15:10 GMT]]></title><description><![CDATA[<p>HumeSikkins schrieb:</p>
<blockquote>
<p>camper schrieb:</p>
<blockquote>
<p>Im Zusammenhang mit volatile besteht eine Inkompatibilität mit C. In C++ Kann eine Zuweisung zu einer volatile Variablen zu einem Lesevorgang auf dieser Variablen führen.</p>
<pre><code class="language-cpp">int a;
volatile int b;
a = b = 5;
</code></pre>
<p>In C hat a hier nach der Zuweisung mit Sicherheit den Wert 5. In C++ ist das nicht unbedingt so. Denn hier ist das Ergebnis einer Zuweisung ein <em>lvalue</em>, der rechte Operand dagegen ein <em>rvalue</em>, die nötige Umwandlung von lvalue zu rvalue ist aber das, was für gewöhnlich zu einem Lesevorgang führt.</p>
</blockquote>
<p>Heißt das soviel wie, dass zwischen der Zuweisung von 5 an b und der von b an a sich der Wert von b ändern könnte (außerhalb des Programms) und somit a den neuen Wert von b zugeweisen bekommt wohingegen in C der alte Wert von b (also 5) verwendet werden würde?</p>
</blockquote>
<p>Genau das. Der Wert 5 wird b zugewiesen und danach wird b gelesen um den Wert für die Zuweisung an a zu bestimmen. Könnte der Compiler beweisen, dass sich b nicht ändern wird (typisch für automatische Variablen, auf die keine externe Referenz existiert), wäre es natürlich trotzdem denkbar, dass sich der resultierende Maschinencode nicht von dem ohne volatile unterscheidet. Hier macht sich die fehlende Festlegung, was genau denn nun Lese- und Schreibvorgänge sind, bemerkbar.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203082</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203082</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Thu, 04 Jan 2007 21:15:10 GMT</pubDate></item><item><title><![CDATA[Reply to volatile? __cdecl? on Fri, 05 Jan 2007 05:28:44 GMT]]></title><description><![CDATA[<p>okay, danke, ich glaube ich hab system mit volatile jetzt verstanden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1203229</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1203229</guid><dc:creator><![CDATA[DrakoXP]]></dc:creator><pubDate>Fri, 05 Jan 2007 05:28:44 GMT</pubDate></item></channel></rss>