<?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[#ifdef DEBUG mit templates?]]></title><description><![CDATA[<p>hallo, um meinen code besser<br />
zu struktuieren, wollte ich eine klasse schreiben, welche<br />
debuginfos sammelt, diese soll natürlich zu nichts zerfallen,<br />
wenn man debugging deaktiviert, mein ansatz war folgender :</p>
<pre><code class="language-cpp">template &lt;bool&gt;
struct FillInDecodingInfos
{
  void addDebugInfos(double info1, double info2, DebugInfo&amp; info);
};

template &lt;&gt;
struct FillInDecodingInfos&lt;true&gt;
{
  void addDebugInfos(double info1, double info2, DebugInfo&amp; info) 
  {
  info.var1 = info1;
  info.var2 = info2;
  }
};

template &lt;&gt;
struct FillInDecodingInfos&lt;false&gt;
{
  void addDebugInfos(double info1, double info2, DebugInfo&amp; info) {}
};
</code></pre>
<p>die klasse DebugInfo ist dann genauso geschrieben, also leer bei false<br />
und ein paar variablen zum sammeln bei true,</p>
<p>meine Frage ist nun, ob solche konstrukte wirklich zu nichts zerfallen,<br />
oder ob ich damit overhead erzeuge, welchen ich bei präprozessor-gefummel<br />
nicht hätte</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/217022/ifdef-debug-mit-templates</link><generator>RSS for Node</generator><lastBuildDate>Sat, 10 Oct 2026 23:50:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/217022.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 02 Jul 2008 07:17:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #ifdef DEBUG mit templates? on Wed, 02 Jul 2008 07:19:20 GMT]]></title><description><![CDATA[<p>hallo, um meinen code besser<br />
zu struktuieren, wollte ich eine klasse schreiben, welche<br />
debuginfos sammelt, diese soll natürlich zu nichts zerfallen,<br />
wenn man debugging deaktiviert, mein ansatz war folgender :</p>
<pre><code class="language-cpp">template &lt;bool&gt;
struct FillInDecodingInfos
{
  void addDebugInfos(double info1, double info2, DebugInfo&amp; info);
};

template &lt;&gt;
struct FillInDecodingInfos&lt;true&gt;
{
  void addDebugInfos(double info1, double info2, DebugInfo&amp; info) 
  {
  info.var1 = info1;
  info.var2 = info2;
  }
};

template &lt;&gt;
struct FillInDecodingInfos&lt;false&gt;
{
  void addDebugInfos(double info1, double info2, DebugInfo&amp; info) {}
};
</code></pre>
<p>die klasse DebugInfo ist dann genauso geschrieben, also leer bei false<br />
und ein paar variablen zum sammeln bei true,</p>
<p>meine Frage ist nun, ob solche konstrukte wirklich zu nichts zerfallen,<br />
oder ob ich damit overhead erzeuge, welchen ich bei präprozessor-gefummel<br />
nicht hätte</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539453</guid><dc:creator><![CDATA[Treb]]></dc:creator><pubDate>Wed, 02 Jul 2008 07:19:20 GMT</pubDate></item><item><title><![CDATA[Reply to #ifdef DEBUG mit templates? on Wed, 02 Jul 2008 12:38:08 GMT]]></title><description><![CDATA[<p>Nicht damit du noch weiter abrutschst und am Ende gar keine Antwort bekommst, so gebe ich dir jetzt eine, welche zwar vielleicht nicht ganz zufrieden stellt.</p>
<p>Ich denke es wir von Compiler zu Compiler unterschiedlich sein, wieviel da wegoptimiert wird und somit die Klasse gestrichen oder nicht. Ich persönlich würde sowas anders lösen, damit es im Release-Modus wirklich weg ist.</p>
<pre><code class="language-cpp">#ifdef _DEBUG

  void add_debug_infos(double dInfo1, double dInfo2, DebugInfo&amp; rInfo)
  {
    // Mach irgendwas.
  }

  #define ADD_DEBUG_INFOS(x, y, z) add_debug_infos(x, y, z)
#else
  #define ADD_DEBUG_INFOS(x, y, z) 
#endif
</code></pre>
<p>Und die Verwendung sehe folgendermasen aus:</p>
<pre><code class="language-cpp">// Irgendwo in einer Funktion
ADD_DEBUG_INFOS(1.0, 2.0, MyInfo); // Oder halt andere Parameter
</code></pre>
<p>Wenn <code>_DEBUG</code> nicht definiert ist, dann bleibt bei der verwendeten Zeile wirklich nichts anderes mehr übrig als ein Semikolon und das bevor der Compiler etwas sieht.</p>
<p>Grüssli</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1539672</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1539672</guid><dc:creator><![CDATA[Dravere]]></dc:creator><pubDate>Wed, 02 Jul 2008 12:38:08 GMT</pubDate></item></channel></rss>