<?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 mit variabler Parameteranzahl?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes &quot;Makro&quot;:</p>
<pre><code class="language-cpp">#define MY_OUTPUT(x) printf(x);
</code></pre>
<p>ACHTUNG: printf, ist nur zum testen da! In &quot;echt&quot; benutz ich eine eigene Funktion die etwas anderes macht, aber zum Testen reicht printf total.</p>
<p>Jetzt möchte ich dieses Makro gerne so benutzen wie printf, also:</p>
<pre><code class="language-cpp">MY_OUTPUT (&quot;%s&quot;, &quot;Hallo&quot;);
    MY_OUTPUT (&quot;%s %s&quot;, &quot;Hallo&quot;, &quot;Welt!&quot;);
</code></pre>
<p>Doch das will 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>Jetzt habe ich bei meiner google-Suche folgendes gefunden:<br />
<a href="http://www.zfx.info/DisplayThread.php?MID=203689" rel="nofollow">http://www.zfx.info/DisplayThread.php?MID=203689</a></p>
<p>Doch das will absolut nicht was die da sagen!</p>
<p>Bei dem hier:</p>
<pre><code class="language-cpp">#define MY_OUTPUT(x) printf(&quot;%s&quot;, x);
</code></pre>
<p>Bekomme ich folgende Warnungen:<br />
main.cpp(22) : warning C4002: too many actual parameters for macro 'MY_OUTPUT'<br />
main.cpp(23) : warning C4002: too many actual parameters for macro 'MY_OUTPUT'</p>
<p>Und bei der Ausgabe kommt &quot;%s %s %s&quot;,</p>
<p>Bei diesem hier was die posten und angeblich laufen soll:</p>
<pre><code class="language-cpp">#define MY_OUTPUT(x...) printf(x);
</code></pre>
<p>Bekomme ich folgenden Compilerfehler:<br />
main.cpp(18) : error C2010: '.' : unexpected in macro formal parameter list</p>
<p>Geht das mit #define überhaupt? Wenn ja wie? Bitte nicht sagen das ich dafür eine Extra klasse schreiben soll mit überladenem () operator <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>Danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/139253/define-mit-variabler-parameteranzahl</link><generator>RSS for Node</generator><lastBuildDate>Sun, 30 Aug 2026 10:38:28 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/139253.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 04 Mar 2006 23:49:34 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to #define mit variabler Parameteranzahl? on Sat, 04 Mar 2006 23:49:34 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe folgendes &quot;Makro&quot;:</p>
<pre><code class="language-cpp">#define MY_OUTPUT(x) printf(x);
</code></pre>
<p>ACHTUNG: printf, ist nur zum testen da! In &quot;echt&quot; benutz ich eine eigene Funktion die etwas anderes macht, aber zum Testen reicht printf total.</p>
<p>Jetzt möchte ich dieses Makro gerne so benutzen wie printf, also:</p>
<pre><code class="language-cpp">MY_OUTPUT (&quot;%s&quot;, &quot;Hallo&quot;);
    MY_OUTPUT (&quot;%s %s&quot;, &quot;Hallo&quot;, &quot;Welt!&quot;);
</code></pre>
<p>Doch das will 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>Jetzt habe ich bei meiner google-Suche folgendes gefunden:<br />
<a href="http://www.zfx.info/DisplayThread.php?MID=203689" rel="nofollow">http://www.zfx.info/DisplayThread.php?MID=203689</a></p>
<p>Doch das will absolut nicht was die da sagen!</p>
<p>Bei dem hier:</p>
<pre><code class="language-cpp">#define MY_OUTPUT(x) printf(&quot;%s&quot;, x);
</code></pre>
<p>Bekomme ich folgende Warnungen:<br />
main.cpp(22) : warning C4002: too many actual parameters for macro 'MY_OUTPUT'<br />
main.cpp(23) : warning C4002: too many actual parameters for macro 'MY_OUTPUT'</p>
<p>Und bei der Ausgabe kommt &quot;%s %s %s&quot;,</p>
<p>Bei diesem hier was die posten und angeblich laufen soll:</p>
<pre><code class="language-cpp">#define MY_OUTPUT(x...) printf(x);
</code></pre>
<p>Bekomme ich folgenden Compilerfehler:<br />
main.cpp(18) : error C2010: '.' : unexpected in macro formal parameter list</p>
<p>Geht das mit #define überhaupt? Wenn ja wie? Bitte nicht sagen das ich dafür eine Extra klasse schreiben soll mit überladenem () operator <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>Danke im voraus!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008806</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008806</guid><dc:creator><![CDATA[#define user]]></dc:creator><pubDate>Sat, 04 Mar 2006 23:49:34 GMT</pubDate></item><item><title><![CDATA[Reply to #define mit variabler Parameteranzahl? on Sat, 04 Mar 2006 23:56:23 GMT]]></title><description><![CDATA[<p>Wenn du unbedingt C hacken willst, dann mach es so:</p>
<pre><code class="language-cpp">struct Log
{
 static Log&amp; getSingleton(); //Singleton-Pattern nachschlagen!
 void operator()(const char* fmt, ...); //Die Funktion mach die ganze Arbeit
};
#define MY_OUTPUT Log::getSingleton()

//Verwendung:
MY_OUTPUT(&quot;%s %s %s&quot;,&quot;Hallo&quot;,&quot; &quot;,&quot;Welt!&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1008809</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008809</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Sat, 04 Mar 2006 23:56:23 GMT</pubDate></item><item><title><![CDATA[Reply to #define mit variabler Parameteranzahl? on Sun, 05 Mar 2006 00:04:08 GMT]]></title><description><![CDATA[<p>@Any<br />
naja das möchte ich eben nicht, da ich auch an diese funktion noch daten ala __FUNC__, __DATE__, __FILE__ und __TIME übergebe, daher fällt das mit dieser Operatormethode flach <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1008810</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008810</guid><dc:creator><![CDATA[#define user]]></dc:creator><pubDate>Sun, 05 Mar 2006 00:04:08 GMT</pubDate></item><item><title><![CDATA[Reply to #define mit variabler Parameteranzahl? on Sun, 05 Mar 2006 00:17:14 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">struct Log
{
 static Log&amp; getSingleton(); //Singleton-Pattern nachschlagen!
 Log&amp; operator()(const char* fmt, ...); //Die Funktion mach die ganze Arbeit
};
#define MY_OUTPUT Log::getSingleton()(&quot;Formatstring&quot;, __FUNC__, __DATE__, ..)

//Verwendung:
MY_OUTPUT(&quot;%s %s %s&quot;,&quot;Hallo&quot;,&quot; &quot;,&quot;Welt!&quot;);
</code></pre>
<p>Der operator() gibt jetzt ne Referenz auf das Log-Objekt zurück</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1008811</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008811</guid><dc:creator><![CDATA[Any]]></dc:creator><pubDate>Sun, 05 Mar 2006 00:17:14 GMT</pubDate></item><item><title><![CDATA[Reply to #define mit variabler Parameteranzahl? on Sun, 05 Mar 2006 00:24:11 GMT]]></title><description><![CDATA[<p>Und was hindert dich daran, die benötigten Daten mit ins Objekt zu ziehen?</p>
<pre><code class="language-cpp">class Log
{
private:
    const char* file_;
public:
    void operator ()(const char* fmt, ...);
    Log(const char* file)
        : file_(file)
    {
    }
};

#define MY_OUTPUT Log(__FILE__)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1008812</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1008812</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sun, 05 Mar 2006 00:24:11 GMT</pubDate></item></channel></rss>