<?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-Salat]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe da mal eine Frage zum Umgang mit defines bzw. Alternativen dazu.</p>
<p>Ich habe ein ziemlich umfangreiches C++-Projekt mit vielen Konfigurationen, in denen per define (#ifdef XYZ) bestimmte Codeteile ein- bzw. auskommentiert werden.<br />
Durch den großen Umfang ist die Gefahr inzwischen groß, dass ein define falsch oder nicht gesetzt wurde und der Code entsprechend die falschen Funktionen abarbeitet. Das muss erstmal gar nicht auffallen sondern erst später, wenn das daraus erstellte tool angewendet wird.</p>
<p>Eine Idee zur Abhilfe war, den defines Werte zuzuweisen, also je nach Konfiguration zu definieren XYZ=1 bzw. XYZ=2 u.s.w. Im Code wird dann abgefragt:</p>
<pre><code class="language-cpp">#if XYZ=1
  //Code1
#elif XYZ=2
  //Code2
#else
  //Fehlermeldung
#endif
</code></pre>
<p>Leider funktioniert das so nicht, obwohl ein Bekannter angeblich so schonmal ein Problem gelöst hat.</p>
<p>Ist hier vielleicht nur der Syntax falsch? Hab allerdings schon diverse Varianten ausprobiert.</p>
<p>Oder gibts da vielleicht ein ganz anderes Konzept, um mit den vielen defines klarzukommen, oder die sogar durch was anderes zu ersetzen?</p>
<p>Grüße<br />
snami</p>
<p>------------------------------------------</p>
<p>WXP, VS 2005</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/196560/define-salat</link><generator>RSS for Node</generator><lastBuildDate>Thu, 09 Apr 2026 07:26:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/196560.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 31 Oct 2007 10:29:10 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #define-Salat on Wed, 31 Oct 2007 10:29:10 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>habe da mal eine Frage zum Umgang mit defines bzw. Alternativen dazu.</p>
<p>Ich habe ein ziemlich umfangreiches C++-Projekt mit vielen Konfigurationen, in denen per define (#ifdef XYZ) bestimmte Codeteile ein- bzw. auskommentiert werden.<br />
Durch den großen Umfang ist die Gefahr inzwischen groß, dass ein define falsch oder nicht gesetzt wurde und der Code entsprechend die falschen Funktionen abarbeitet. Das muss erstmal gar nicht auffallen sondern erst später, wenn das daraus erstellte tool angewendet wird.</p>
<p>Eine Idee zur Abhilfe war, den defines Werte zuzuweisen, also je nach Konfiguration zu definieren XYZ=1 bzw. XYZ=2 u.s.w. Im Code wird dann abgefragt:</p>
<pre><code class="language-cpp">#if XYZ=1
  //Code1
#elif XYZ=2
  //Code2
#else
  //Fehlermeldung
#endif
</code></pre>
<p>Leider funktioniert das so nicht, obwohl ein Bekannter angeblich so schonmal ein Problem gelöst hat.</p>
<p>Ist hier vielleicht nur der Syntax falsch? Hab allerdings schon diverse Varianten ausprobiert.</p>
<p>Oder gibts da vielleicht ein ganz anderes Konzept, um mit den vielen defines klarzukommen, oder die sogar durch was anderes zu ersetzen?</p>
<p>Grüße<br />
snami</p>
<p>------------------------------------------</p>
<p>WXP, VS 2005</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395086</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395086</guid><dc:creator><![CDATA[Snami]]></dc:creator><pubDate>Wed, 31 Oct 2007 10:29:10 GMT</pubDate></item><item><title><![CDATA[Reply to #define-Salat on Wed, 31 Oct 2007 10:32:54 GMT]]></title><description><![CDATA[<p>Ja, die Syntax ist falsch - Vergleiche werden in C++ mit == durchgeführt (auch vom Präprozessor).</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395089</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395089</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 31 Oct 2007 10:32:54 GMT</pubDate></item><item><title><![CDATA[Reply to #define-Salat on Wed, 31 Oct 2007 11:08:58 GMT]]></title><description><![CDATA[<p>Mit == hab ich das ganze auch schon probiert. Funktioniert leider genauso nicht wie mit =.</p>
<p>Ich habe auch mal die Werte 1 und 2 vertauscht:</p>
<pre><code class="language-cpp">#if XYZ==2
  //Code1
#elif XYZ==1
  //Code2
#else
  //Fehlermeldung
#endif
</code></pre>
<p>Das Programm führt immer Code 1 aus, nimmt also immer die erste Verzweigung, egal ob hinter XYZ ==1 oder ==2 steht.<br />
Die Definition lautet hier übrigens &quot;XYZ=1&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395118</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395118</guid><dc:creator><![CDATA[Snami]]></dc:creator><pubDate>Wed, 31 Oct 2007 11:08:58 GMT</pubDate></item><item><title><![CDATA[Reply to #define-Salat on Wed, 31 Oct 2007 11:12:59 GMT]]></title><description><![CDATA[<p>Snami schrieb:</p>
<blockquote>
<p>Die Definition lautet hier übrigens &quot;XYZ=1&quot;</p>
</blockquote>
<p>Wo steht denn diese Definition?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395124</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395124</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 31 Oct 2007 11:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to #define-Salat on Wed, 31 Oct 2007 11:26:08 GMT]]></title><description><![CDATA[<blockquote>
<p>Wo steht denn diese Definition?</p>
</blockquote>
<p>Projekt -&gt; Eigenschaften -&gt; Präprozessor -&gt; Präprozessordefinition</p>
<p>Eben hat das ganz übrigens bei mir funktioniert, warum auch immer.<br />
Dann habe ich aber mal das ganze mit Strings versucht:</p>
<p>Define: XYZ=&quot;DEF&quot;</p>
<pre><code class="language-cpp">#if XYZ==&quot;ABC&quot;
  //Code1
#elif XYZ==&quot;DEF&quot;
  //Code2
#else
  //Fehlermeldung
#endif
</code></pre>
<p>Hier wird wieder immer Code1 ausgeführt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395130</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395130</guid><dc:creator><![CDATA[Snami]]></dc:creator><pubDate>Wed, 31 Oct 2007 11:26:08 GMT</pubDate></item><item><title><![CDATA[Reply to #define-Salat on Wed, 31 Oct 2007 11:35:51 GMT]]></title><description><![CDATA[<p>Also mit Strings/String-Literalen dürfte es nicht funktionieren - da beherrscht noch nichtmal C selber den Vergleich vernünftig (ein Grund, warum es strcmp() gibt).</p>
<p>Aber es ist trotzdem seltsam, daß überhaupt eine der Bedingungen als erfüllt gilt - ich würde entweder erwarten, daß der Präprozessor den &quot;richtigen&quot; Block auswählt, oder daß er den #else Block nimmt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1395133</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1395133</guid><dc:creator><![CDATA[CStoll]]></dc:creator><pubDate>Wed, 31 Oct 2007 11:35:51 GMT</pubDate></item></channel></rss>