<?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[makro]]></title><description><![CDATA[<p>Ich überarbeite im Moment meine Logger Klasse und möchte den zugriff vereinfachen.</p>
<p>Wenn ich was loggen möchte, ann muss ich immer:</p>
<pre><code class="language-cpp">Logger::getInstance().write
</code></pre>
<p>schreiben</p>
<p>bsp:</p>
<pre><code class="language-cpp">Logger::getInstance().write(MESSAGE, &quot;Hello %d&quot;, 44);
</code></pre>
<p>wie kann ich den ganzen Spaß in ein Makro klatschen?</p>
<pre><code class="language-cpp">nhBool write(nhuInt type, const nhwChar* args, ...)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/topic/156415/makro</link><generator>RSS for Node</generator><lastBuildDate>Tue, 08 Sep 2026 19:43:25 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/156415.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 16 Aug 2006 13:54:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 13:54:41 GMT]]></title><description><![CDATA[<p>Ich überarbeite im Moment meine Logger Klasse und möchte den zugriff vereinfachen.</p>
<p>Wenn ich was loggen möchte, ann muss ich immer:</p>
<pre><code class="language-cpp">Logger::getInstance().write
</code></pre>
<p>schreiben</p>
<p>bsp:</p>
<pre><code class="language-cpp">Logger::getInstance().write(MESSAGE, &quot;Hello %d&quot;, 44);
</code></pre>
<p>wie kann ich den ganzen Spaß in ein Makro klatschen?</p>
<pre><code class="language-cpp">nhBool write(nhuInt type, const nhwChar* args, ...)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1118414</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118414</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Wed, 16 Aug 2006 13:54:41 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 13:56:38 GMT]]></title><description><![CDATA[<p>Gar nicht, sowas tut man nicht :p.<br />
Makros haben (noch) keine Parameterlisten variabler Länge, also get das nicht. Was spricht dagegen, auf das Streaminterface aufzubauen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118416</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118416</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Wed, 16 Aug 2006 13:56:38 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 13:59:58 GMT]]></title><description><![CDATA[<p>.filmor schrieb:</p>
<blockquote>
<p>Makros ... Parameterlisten variabler Länge, ....</p>
</blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /> *schubber*<br />
Die Kombination macht mich grausen ....<br />
<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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118421</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118421</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 16 Aug 2006 13:59:58 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 14:01:42 GMT]]></title><description><![CDATA[<p>So einiges, da die writeFunktion immer schreiben soll:</p>
<p>Time : type : Message:</p>
<p>sonst müsste ich ja imemr :</p>
<p>Logger::getInstance() &lt;&lt; Time &lt;&lt; L&quot; &quot;&lt;&lt; type &lt;&lt; L&quot; &quot; &lt;&lt; Message;</p>
<p>schreiben!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118424</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118424</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Wed, 16 Aug 2006 14:01:42 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 14:02:02 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#define write Logger::getInstance().write
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1118425</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118425</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 16 Aug 2006 14:02:02 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 14:03:33 GMT]]></title><description><![CDATA[<p>genau, das habe ich gesucht</p>
<p>THX</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118428</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118428</guid><dc:creator><![CDATA[Tc++H]]></dc:creator><pubDate>Wed, 16 Aug 2006 14:03:33 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 14:12:59 GMT]]></title><description><![CDATA[<p>Tc++H schrieb:</p>
<blockquote>
<p>genau, das habe ich gesucht</p>
<p>THX</p>
</blockquote>
<p>ich hoffe, Du nutzt nirgendwo sonst in Deinem Code (außerhalb vo Kommentaren) das Symbol &quot;write&quot; ..... und wirst das auch nie tun. <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>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118438</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Wed, 16 Aug 2006 14:12:59 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Wed, 16 Aug 2006 14:34:46 GMT]]></title><description><![CDATA[<p>Simon2 schrieb:</p>
<blockquote>
<p>Tc++H schrieb:</p>
<blockquote>
<p>genau, das habe ich gesucht</p>
<p>THX</p>
</blockquote>
<p>ich hoffe, Du nutzt nirgendwo sonst in Deinem Code (außerhalb vo Kommentaren) das Symbol &quot;write&quot; ..... und wirst das auch nie tun. <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>Gruß,</p>
<p>Simon2.</p>
</blockquote>
<p>insbesondere darf das symbol nicht existieren, wenn Logger::write deklariert bzw. definiert wird <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1118455</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118455</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Wed, 16 Aug 2006 14:34:46 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Thu, 17 Aug 2006 06:58:40 GMT]]></title><description><![CDATA[<p>camper schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#define write Logger::getInstance().write
</code></pre>
</blockquote>
<p>Um die Probleme mit dem Symbol &quot;write&quot; ein wenig zu entschärfen würde ich ein eindeutigeres Symbol wählen, etwa &quot;log_write&quot;. Dann ist auch klar, daß ein</p>
<pre><code class="language-cpp">write(&quot;irgendwas&quot;);
</code></pre>
<p>nicht einfach was schreibt, sondern was mit dem logging zu tun hat.</p>
<p>Aber ein Streaminterface ist sicher besser. Du könntest etwas wie:</p>
<pre><code class="language-cpp">#define log_write(expr) \
  do { \
    Logger l = Logger::getInstance(); \
    if (l.isEnabled()) \
      l &lt;&lt; l.getTime() &lt;&lt; ' ' &lt;&lt; l.getType &lt;&lt; ' ' &lt;&lt; expr &lt;&lt; std::endl; \
  while(false)
</code></pre>
<p>verwenden. Das hat mehrere Vorteile. Die Formatierung findet nur statt, wenn der Logger aktiviert ist und mit den auszugebenden Typen ist man auch flexibler. Dann kannst Du so etwas schreiben:</p>
<pre><code class="language-cpp">log_write(&quot;Hello &quot; &lt;&lt; 44);
</code></pre>
<p>Der einfachheit halber kannst Du auch einen std::ostringstream verwenden um die Meldung zu formatieren.</p>
<p>Ich habe so etwas auch mal geschrieben und auch unter der GPL zum download bereit gestellt. Es ist Bestandteil meiner Toolbox, die ich in fast jedem C++-Programm verwende. Wenn Du Interesse hast, melde Dich bei mir (oder suche in deiner bevorzugten Suchmaschine nach Tntnet).</p>
<p>Gruß</p>
<p>Tntnet</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118877</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118877</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Thu, 17 Aug 2006 06:58:40 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Thu, 17 Aug 2006 07:08:25 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<pre><code class="language-cpp">#define log_write(expr) \
  do { \
    Logger l = Logger::getInstance(); \
    if (l.isEnabled()) \
      l &lt;&lt; l.getTime() &lt;&lt; ' ' &lt;&lt; l.getType &lt;&lt; ' ' &lt;&lt; expr &lt;&lt; std::endl; \
  while(false)
</code></pre>
</blockquote>
<p>getInstance klingt nach Singleton, dann wohl eher Logger&amp;.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118879</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118879</guid><dc:creator><![CDATA[.filmor]]></dc:creator><pubDate>Thu, 17 Aug 2006 07:08:25 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Thu, 17 Aug 2006 07:36:39 GMT]]></title><description><![CDATA[<p>Wenn du Interesse hast kannst du mir ja einmal eine EMail an <a href="mailto:mail@kevin-jakob.de" rel="nofollow">mail@kevin-jakob.de</a> schreiben. Ich habe auch eine Log-Klasse in ständiger Weiterentwicklung, sie ist auch bei mir Teil meiner Klassenbibliothek. Ich würde mich über einen Gedankenaustausch freuen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118898</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118898</guid><dc:creator><![CDATA[Kevinus]]></dc:creator><pubDate>Thu, 17 Aug 2006 07:36:39 GMT</pubDate></item><item><title><![CDATA[Reply to makro on Thu, 17 Aug 2006 08:27:18 GMT]]></title><description><![CDATA[<p>Tc++H schrieb:</p>
<blockquote>
<p>So einiges, da die writeFunktion immer schreiben soll:</p>
<p>Time : type : Message:</p>
<p>sonst müsste ich ja imemr :</p>
<p>Logger::getInstance() &lt;&lt; Time &lt;&lt; L&quot; &quot;&lt;&lt; type &lt;&lt; L&quot; &quot; &lt;&lt; Message;</p>
<p>schreiben!</p>
</blockquote>
<p>Naja, ob Du nun &quot;,&quot; oder &quot;&lt;&lt;&quot; schreibst, macht den Kohl doch auch nicht fett, oder ? (Dafür sparst Du den Funktionsnamen und zwei Klammern <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="😉"
    /> )<br />
Und die (L&quot; &quot;)s kannst Du ja in den operator&lt;&lt;() einbauen ...</p>
<p>Vielleicht das für Dich noch ungewohnter aus als &quot;funcname(arg, arg, arg);&quot; (evtl. weil Du von C oder einer anderen Progsprache her kommst ?), ist mE aber die beste Lösung und kommt ohne Ellipsen und Makros aus- und Du wirst Dich schnell dran gewöhnen und die Vorteile zu schätzen lernen.</p>
<p>Wenn Dich das Logger::getInstance() noch stört, kannst Du das noch durch eine Funktion abkürzen (wobei Abkürzungen immer noch das Problem der Mehrdeutigkeiten haben - aber bei &quot;Funktionsmehrdeutigkeiten&quot; kann der Compiler/Linker wenigstens sicher und einheitlich damit umgehen im Gegensatz zu &quot;Makro-Mehrdeutigkeiten&quot;)</p>
<pre><code class="language-cpp">Logger&amp; log() { return Logger::getInstance(); }
</code></pre>
<p>(Außerdem birgt das noch die Gefahr, sich die Referenz &quot;merken&quot; zu wollen (und damit das Singletonpattern einzuschränken) ... aber letztlich kann man das mit getInstance() ebenso machen)</p>
<p>Gruß,</p>
<p>Simon2.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1118923</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1118923</guid><dc:creator><![CDATA[Simon2]]></dc:creator><pubDate>Thu, 17 Aug 2006 08:27:18 GMT</pubDate></item></channel></rss>