<?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[Frage zu const]]></title><description><![CDATA[<p>Hey Leute,<br />
ich versteh einen kleinen Abschnitt aus Effektiv C++ nicht so ganz, vielleicht kann mir da jemand ein bisschen auf die Sprünge helfen=)</p>
<p>Also die Vorteile von const zu define sind mir schon klar, blos eben dieser kleine Teil nicht...</p>
<p>Effektiv C++ schrieb:</p>
<blockquote>
<p>Darüber hinaus kann im Fall einer Fließkommakonstante die Verwendung der Konstante zu kürzerem Code führen als der Einsatz von #define. Das liegt daran, dass die blinde Ersetzung von ASPECT_RADIO durch 1.653 durch den Präprozessor zu mehreren Kopien von 1.653 im Objektcode führen kann, währen der Einsatz von der Konstanten AspectRadio( das ist die const Variante ) niemals mehr als eine Kopie erzeugen sollte.</p>
</blockquote>
<p>Versteh ich leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Schonmal danke für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/273858/frage-zu-const</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 22:39:01 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/273858.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 14 Sep 2010 14:52:44 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 14:53:04 GMT]]></title><description><![CDATA[<p>Hey Leute,<br />
ich versteh einen kleinen Abschnitt aus Effektiv C++ nicht so ganz, vielleicht kann mir da jemand ein bisschen auf die Sprünge helfen=)</p>
<p>Also die Vorteile von const zu define sind mir schon klar, blos eben dieser kleine Teil nicht...</p>
<p>Effektiv C++ schrieb:</p>
<blockquote>
<p>Darüber hinaus kann im Fall einer Fließkommakonstante die Verwendung der Konstante zu kürzerem Code führen als der Einsatz von #define. Das liegt daran, dass die blinde Ersetzung von ASPECT_RADIO durch 1.653 durch den Präprozessor zu mehreren Kopien von 1.653 im Objektcode führen kann, währen der Einsatz von der Konstanten AspectRadio( das ist die const Variante ) niemals mehr als eine Kopie erzeugen sollte.</p>
</blockquote>
<p>Versteh ich leider nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f61e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--disappointed_face"
      title=":("
      alt="😞"
    /></p>
<p>Schonmal danke für eure Hilfe <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952526</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952526</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 14 Sep 2010 14:53:04 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 16:54:39 GMT]]></title><description><![CDATA[<p>naja, der Text schildert folgendes Faktum:<br />
Wenn du mit #define arbeitest, ersetzt der Präprozessor jedes Vorkommen des Makros (&quot;ASPECT_RATIO&quot; in diesem Falle) durch die hinterlegte Zahl (1.653).</p>
<p>Zum dem Teil mit dem kürzeren Code fällt mir nur diese Möglichkeit ein. Ist aber nur eine Vermutung!<br />
Ohne Optimierung wird das durch den PP ersetzte Literal 1.653 jedes mal neu in das compilierte Programm geschrieben.</p>
<p>An einer mit &quot;const&quot; definierten Konstanten ändert der Präprozessor nichts, d.h. der Compiler erkennt, dass das immer der selbe Wert ist, und wird ihn nur einmal einkompilieren und dann mit Referenzen auf diese Stelle im Datensegment arbeiten.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952587</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952587</guid><dc:creator><![CDATA[gast0815]]></dc:creator><pubDate>Tue, 14 Sep 2010 16:54:39 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 17:06:47 GMT]]></title><description><![CDATA[<p>Sehe das auch so, wie gast0815</p>
<p>allerdings:</p>
<blockquote>
<p>niemals mehr als eine Kopie erzeugen sollte</p>
</blockquote>
<p>Der Ausschnitt lässt so ziemlich alles offen, wie es auch der Standard tut.</p>
<p>Wenn man auf Geschwindigkeit optimiert (was eigentlich immer der Fall ist), dann wird das sehr wahrscheinlich auf das gleiche rauskommen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952595</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952595</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 14 Sep 2010 17:06:47 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 19:46:19 GMT]]></title><description><![CDATA[<p>Ok vielen Dank für die beiden Antworten.<br />
Kling auf jeden Fall logisch <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /></p>
<p>Falls vielleicht auch jemand das Buch gelesen hat und sich an die Stelle erinnert oder es 100%ig weiß kann er es natürlich gern noch posten, wobei ich aber doch schon von ausgeh dass die Vermutung von Gast und drakon so richtig ist.</p>
<p>Also danke an euch beide <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952677</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952677</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 14 Sep 2010 19:46:19 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 20:00:40 GMT]]></title><description><![CDATA[<p>Naja. Was er damit meint geht ja aus dem Text ganz klar heraus.</p>
<p>Nur ist überhaupt nicht definiert, was der Compiler alles macht und somit ist das nur reine Spekulation, dass er da kürzeren Code erzeugt.</p>
<p>Sagen was passiert kann man nur definitiv für einen Compiler + die Einstellungen dafür.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952683</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952683</guid><dc:creator><![CDATA[drakon]]></dc:creator><pubDate>Tue, 14 Sep 2010 20:00:40 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 20:06:37 GMT]]></title><description><![CDATA[<p>Okidoki, ich weiß jetzt auf jeden Fall was da gemeint war, weil das wollt ich ja hauptsächlich wissen.</p>
<p>Dass das jeder Compiler anderst handhabt find ich persönlich jetzt nicht mal so wichtig, hauptsache ich weiß dass man const ganz klar #define vorziehen soll und die Gründe dafür <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f642.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--slightly_smiling_face"
      title=":)"
      alt="🙂"
    /></p>
<p>Also nochmals Danke für die Hilfe mit meinem kleinen Verständnisproblem.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952685</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952685</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 14 Sep 2010 20:06:37 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 20:07:16 GMT]]></title><description><![CDATA[<p>fr33g schrieb:</p>
<blockquote>
<p>Falls vielleicht auch jemand das Buch gelesen hat und sich an die Stelle erinnert oder es 100%ig weiß kann er es natürlich gern noch posten, wobei ich aber doch schon von ausgeh dass die Vermutung von Gast und drakon so richtig ist.</p>
</blockquote>
<p>Weiss nicht, ob es wirklich richtig ist. Mich irritiert dabei, dass er von &quot;Im Fall einer Fliesskommazahl&quot; spricht. Und das ist nicht mal ein Übersetzungsfehler, ich habe hier die englische Version. Er erwähnt es in der englischen Version sogar fast noch expliziter:</p>
<p>Effective C++ Third Edition, Item 2, Page 13 schrieb:</p>
<blockquote>
<p>In addition, in the case of a floating point constant (such as in this example), use of the constant may yield smaller code than using a #define. That's because the preprocessor's blind substitution of the macro name ASPECT_RATIO with 1.653 could result in multiple copies of 1.653 in your object code, while the use of the constant AspectRatio should never result in more than one copy.</p>
</blockquote>
<p>Das was drakon und gast0815 angesprochen haben würde auch für ein Integer- oder String-Literal zutreffen. Ich verstehe nicht, wieso er hier so explizit die Fliesskommazahl erwähnt.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952686</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952686</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Tue, 14 Sep 2010 20:07:16 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 20:27:17 GMT]]></title><description><![CDATA[<p>Ja das stimmt das hat mich allerdings beim lesen auch ein bisschen irritiert weil er explizit auf die Fließkommakonstante eingeht.</p>
<p>Allerdings habe ich jetzt auch gar nicht mehr daran gedacht.</p>
<p>Vielleicht weiß ja doch noch irgend jemand anderes was genau da gemeint ist.</p>
<p>Lg freeG</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952692</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952692</guid><dc:creator><![CDATA[fr33g]]></dc:creator><pubDate>Tue, 14 Sep 2010 20:27:17 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 22:30:51 GMT]]></title><description><![CDATA[<p>Um da weiter spekulieren zu können, sollte man halt den Kontext kennen, also mindestens den vorhergehenden Absatz.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952726</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952726</guid><dc:creator><![CDATA[gast0815]]></dc:creator><pubDate>Tue, 14 Sep 2010 22:30:51 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Tue, 14 Sep 2010 22:41:29 GMT]]></title><description><![CDATA[<p><strong>Spekulation</strong>: Ganzzahlen die zur Compilezeit bekannt sind, können in der Regel wegoptimiert werden. Bei Fließkommazahlen geht dies nicht so gut, denn aufgrund der Besonderheiten der Fließkommaarithmetik hängen die genauen Rechenergebnisse auch von den anderen beteiligten Faktoren ab. Beispiel (x*2)*3 ist immer das gleiche wie x*6, aber bei (x*2.1)*3.1 kann man dafür keine allgemeine Vereinfachung finden.</p>
<p>Und auf 32 Bit Systemen sind zudem Verweise (=Pointer) auf andere Codestellen kürzer als Fließkommawerte, während Integerkonstanten die gleiche Größe wie der Verweis haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952728</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952728</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Tue, 14 Sep 2010 22:41:29 GMT</pubDate></item><item><title><![CDATA[Reply to Frage zu const on Wed, 15 Sep 2010 00:10:47 GMT]]></title><description><![CDATA[<p>Naja, ich denke der Absatz aus Effektiv C++ ist ziemlich blubb.</p>
<p>Es kann so oder so ausgehen, kommt auf den Compiler an. Wäre auch denkbar dass Fliesskomma-Literals (#define) zu schnellerem Code führen als Fliesskomma-Konstanten (static const).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1952744</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1952744</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Wed, 15 Sep 2010 00:10:47 GMT</pubDate></item></channel></rss>