<?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[#define funktioniert nicht]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich steh mal wieder mit dem Präprozessor auf Kriegsfuss.<br />
nachfolgend ein Code- Schnipsel:</p>
<pre><code class="language-cpp">const int g_nDieZehn = 10;

#define DIE_ZEHN_1  g_nDieZehn
#define DIE_ZEHN_2  10

void Testfunktion()
{
   // Das hier schmeisst der Präprozessor raus...
   #if DIE_ZEHN_1 != 0
      int a;
      a++;
   #endif

   // ...aber das hier bleibt drin
   #if DIE_ZEHN_2 != 0
      int b;
      b++;
   #endif
}
</code></pre>
<p>Die Zeilen 10 und 11 werden vom Präprozessor rausgeworfen,<br />
die Zeilen 16 und 17 aber bleiben drin. Ich hätte hier erwartet<br />
dass nichts rausgeworfen wird.<br />
Kann mir jemand von Euch erklären warum Zeile 10 und 11 rausfliegen?<br />
Wäre für Tips sehr dankbar,</p>
<p>Gruss Ulli</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/228281/define-funktioniert-nicht</link><generator>RSS for Node</generator><lastBuildDate>Tue, 29 Sep 2026 17:00:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/228281.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 26 Nov 2008 12:01:32 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 12:01:32 GMT]]></title><description><![CDATA[<p>Hallo an alle,</p>
<p>ich steh mal wieder mit dem Präprozessor auf Kriegsfuss.<br />
nachfolgend ein Code- Schnipsel:</p>
<pre><code class="language-cpp">const int g_nDieZehn = 10;

#define DIE_ZEHN_1  g_nDieZehn
#define DIE_ZEHN_2  10

void Testfunktion()
{
   // Das hier schmeisst der Präprozessor raus...
   #if DIE_ZEHN_1 != 0
      int a;
      a++;
   #endif

   // ...aber das hier bleibt drin
   #if DIE_ZEHN_2 != 0
      int b;
      b++;
   #endif
}
</code></pre>
<p>Die Zeilen 10 und 11 werden vom Präprozessor rausgeworfen,<br />
die Zeilen 16 und 17 aber bleiben drin. Ich hätte hier erwartet<br />
dass nichts rausgeworfen wird.<br />
Kann mir jemand von Euch erklären warum Zeile 10 und 11 rausfliegen?<br />
Wäre für Tips sehr dankbar,</p>
<p>Gruss Ulli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621060</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621060</guid><dc:creator><![CDATA[CUlli]]></dc:creator><pubDate>Wed, 26 Nov 2008 12:01:32 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 12:15:30 GMT]]></title><description><![CDATA[<p>CUlli schrieb:</p>
<blockquote>
<p>ich steh mal wieder mit dem Präprozessor auf Kriegsfuss.</p>
</blockquote>
<p>Den man eh so selten als möglich verwenden sollte...</p>
<p>CUlli schrieb:</p>
<blockquote>
<p>Kann mir jemand von Euch erklären warum Zeile 10 und 11 rausfliegen? Wäre für Tips sehr dankbar,</p>
</blockquote>
<p>Ich könnte mir vorstellen woran es liegen kann. Der Präprocessor wird vor jeglicher Compilierung als reine Textersetzung durchgeführt. Ich nehme mal an, das zu diesem Zeitpunkt keine Konstanten initialisiert sind, und er deshalb den Ausdruck negativ auswertet. Der Präprocessor wird wie gesagt vor jeglicher Codeanalyse etc. angewendet...</p>
<p>cu André</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621071</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621071</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Nov 2008 12:15:30 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 12:17:29 GMT]]></title><description><![CDATA[<p>g_nDieZehn hat ja während des Preprocessing noch nicht den Wert 10 zugewesen bekommen, das passiert ja erst zur Laufzeit. Das kann also kaum funktionieren. Keine Ahnung, was genau er da vergleicht, aber mit Sicherheit nicht 10 und 0. Na ja, vermutlich wird er da eine 0 einsetzen...</p>
<p>Übrigens: du inkrementierst a bzw. b, ohne vorher einen Wert zugewiesen zu haben.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621072</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621072</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 26 Nov 2008 12:17:29 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 12:18:14 GMT]]></title><description><![CDATA[<p>#define funktioniert einwandtfrei, es hapert eher an deinem Verständnis...</p>
<p>der Präprozessor ist eine rein TEXTUELL basierte Sache die VOR dem Compiler ausgeführt wird. Der kennst keine variablen, Datentypen oder sonst was, der kennt nur Texte und kann die Vergleiche oder ersetzen.</p>
<p>Jetzt betrachte mal die Zeichenketten &quot;g_nDieZehn&quot; und &quot;10&quot; sind die gleich?</p>
<p>(ja, später, wenn der Compiler den Sourcecode compiliert dann ist g_nDieZehn<br />
eine Variable, aber der Präprozessor ist KEIN Compiler)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621073</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621073</guid><dc:creator><![CDATA[loks]]></dc:creator><pubDate>Wed, 26 Nov 2008 12:18:14 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 19:48:28 GMT]]></title><description><![CDATA[<p>asc schrieb:</p>
<blockquote>
<p>Den man eh so selten als möglich verwenden sollte...</p>
</blockquote>
<p>Der Präprozessor kann in einigen Dingen aber ganz nützlich sein.</p>
<p>_matze schrieb:</p>
<blockquote>
<p>g_nDieZehn hat ja während des Preprocessing noch nicht den Wert 10 zugewesen bekommen, <strong>das passiert ja erst zur Laufzeit.</strong></p>
</blockquote>
<p>Nein. Mit Integer-Literalen initialisierte Konstanten werden zur Compilezeit ausgewertet. Im neuen Standard können Compilezeit-Konstanten durch <code>constexpr</code> explizit gekennzeichnet werden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621391</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621391</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:48:28 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 19:57:07 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Den man eh so selten als möglich verwenden sollte...</p>
</blockquote>
<p>Der Präprozessor kann in einigen Dingen aber ganz nützlich sein.</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f44d.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--thumbs_up"
      title=":+1:"
      alt="👍"
    /></p>
<p>Nexus schrieb:</p>
<blockquote>
<p>_matze schrieb:</p>
<blockquote>
<p>g_nDieZehn hat ja während des Preprocessing noch nicht den Wert 10 zugewesen bekommen, <strong>das passiert ja erst zur Laufzeit.</strong></p>
</blockquote>
<p>Nein. Mit Integer-Literalen initialisierte Konstanten werden zur Compilezeit ausgewertet. Im neuen Standard können Compilezeit-Konstanten durch <code>constexpr</code> explizit gekennzeichnet werden.</p>
</blockquote>
<p>Ok, wusste ich nicht. <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1621401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621401</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:57:07 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 19:58:47 GMT]]></title><description><![CDATA[<p>_matze schrieb:</p>
<blockquote>
<p>Ok, wusste ich nicht. <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>
</blockquote>
<p>Das hast du sicher auch schon verwendet:</p>
<pre><code class="language-cpp">const int Size = 32;
double Array[Size];
</code></pre>
<p>Oder:</p>
<pre><code class="language-cpp">const int Size = 32;
std::tr1::array&lt;double, Size&gt; Array;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1621403</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621403</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Wed, 26 Nov 2008 19:58:47 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 20:19:31 GMT]]></title><description><![CDATA[<p>Hehe, klar, jetzt wo du es sagst. <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f921.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--clown_face"
      title=":clown:"
      alt="🤡"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621413</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621413</guid><dc:creator><![CDATA[_matze]]></dc:creator><pubDate>Wed, 26 Nov 2008 20:19:31 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 20:22:48 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Den man eh so selten als möglich verwenden sollte...</p>
</blockquote>
<p>Der Präprozessor kann in einigen Dingen aber ganz nützlich sein.</p>
</blockquote>
<p>Das er manchmal nützlich ist, habe ich auch garnicht angezweifelt. Nur wird er meist an Stellen verwendet wo es mit Sprachmitteln besser geht.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621417</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621417</guid><dc:creator><![CDATA[asc]]></dc:creator><pubDate>Wed, 26 Nov 2008 20:22:48 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Wed, 26 Nov 2008 21:38:25 GMT]]></title><description><![CDATA[<p>Nexus schrieb:</p>
<blockquote>
<p>asc schrieb:</p>
<blockquote>
<p>Den man eh so selten als möglich verwenden sollte...</p>
</blockquote>
<p>Der Präprozessor kann in einigen Dingen aber ganz nützlich sein.</p>
<p>_matze schrieb:</p>
<blockquote>
<p>g_nDieZehn hat ja während des Preprocessing noch nicht den Wert 10 zugewesen bekommen, <strong>das passiert ja erst zur Laufzeit.</strong></p>
</blockquote>
<p>Nein. Mit Integer-Literalen initialisierte Konstanten werden zur Compilezeit ausgewertet.</p>
</blockquote>
<p>Auf jeden Fall nicht während des Preprocessing.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621459</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621459</guid><dc:creator><![CDATA[Belli]]></dc:creator><pubDate>Wed, 26 Nov 2008 21:38:25 GMT</pubDate></item><item><title><![CDATA[Reply to #define funktioniert nicht on Thu, 27 Nov 2008 08:14:47 GMT]]></title><description><![CDATA[<p>Hallo nochmal,</p>
<p>besten Dank an alle fuer die Antworten,</p>
<p>Gruss Ulli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1621579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1621579</guid><dc:creator><![CDATA[CUlli]]></dc:creator><pubDate>Thu, 27 Nov 2008 08:14:47 GMT</pubDate></item></channel></rss>