<?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[Marko spielt mir Streiche]]></title><description><![CDATA[<p>Hi.<br />
Ich bin gerade dabei, mir ein bisschen Tipparbeit zu ersparen.<br />
Ich habe eine recht einfache Klasse erstellt - zum testen halt.</p>
<p>Das Makro sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">#define PYCMD_ADD(classname, command, description) \
	m_pPython-&gt;addCommand(command, classname##_##command##_py, description);
</code></pre>
<p>Es sollte beim Ausführen folgendem Code entsprechen:</p>
<pre><code class="language-cpp">m_pPython-&gt;addCommand(&quot;spawnPlayer&quot;, Spawn_spawnPlayer_py, &quot;Spawns a player into world&quot;);
</code></pre>
<p>Doch leider wirft die Makroversion Fehler.<br />
Füge ich den Code ohne Makro ein, geht es problemlos. Mit Makro kommt jedoch folgende Meldung:</p>
<pre><code>error C3867: &quot;CSpawn::spawnPlayer&quot;: Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie &quot;&amp;CSpawn::spawnPlayer&quot;, um einen Zeiger auf den Member zu erstellen.
</code></pre>
<p>Auch wenn ich ein &amp; vor den Makronamen packe ändert sich nichts (für meinen Zweck wäre es eh sinnlos). Die Funktion Spawn_spawnPlayer-py ist vom Typ PyCFunction und sieh existiert.</p>
<p>Hier ist nochmal der Prototype der CPython::addCommand Funktion:</p>
<pre><code class="language-cpp">void CPython::addCommand(char *pszCommand, PyCFunction pyCallback, char *pszDescription);
</code></pre>
<p>Gruß und Danke an alle im voraus.<br />
(Ich hoffe ich habe genug Informationen geliefert um das Problem nachzuvollziehen)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/247142/marko-spielt-mir-streiche</link><generator>RSS for Node</generator><lastBuildDate>Thu, 17 Sep 2026 18:23:34 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/247142.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 06 Aug 2009 14:52:33 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 14:55:39 GMT]]></title><description><![CDATA[<p>Hi.<br />
Ich bin gerade dabei, mir ein bisschen Tipparbeit zu ersparen.<br />
Ich habe eine recht einfache Klasse erstellt - zum testen halt.</p>
<p>Das Makro sieht folgendermaßen aus:</p>
<pre><code class="language-cpp">#define PYCMD_ADD(classname, command, description) \
	m_pPython-&gt;addCommand(command, classname##_##command##_py, description);
</code></pre>
<p>Es sollte beim Ausführen folgendem Code entsprechen:</p>
<pre><code class="language-cpp">m_pPython-&gt;addCommand(&quot;spawnPlayer&quot;, Spawn_spawnPlayer_py, &quot;Spawns a player into world&quot;);
</code></pre>
<p>Doch leider wirft die Makroversion Fehler.<br />
Füge ich den Code ohne Makro ein, geht es problemlos. Mit Makro kommt jedoch folgende Meldung:</p>
<pre><code>error C3867: &quot;CSpawn::spawnPlayer&quot;: Dem Funktionsaufruf fehlt die Argumentliste. Verwenden Sie &quot;&amp;CSpawn::spawnPlayer&quot;, um einen Zeiger auf den Member zu erstellen.
</code></pre>
<p>Auch wenn ich ein &amp; vor den Makronamen packe ändert sich nichts (für meinen Zweck wäre es eh sinnlos). Die Funktion Spawn_spawnPlayer-py ist vom Typ PyCFunction und sieh existiert.</p>
<p>Hier ist nochmal der Prototype der CPython::addCommand Funktion:</p>
<pre><code class="language-cpp">void CPython::addCommand(char *pszCommand, PyCFunction pyCallback, char *pszDescription);
</code></pre>
<p>Gruß und Danke an alle im voraus.<br />
(Ich hoffe ich habe genug Informationen geliefert um das Problem nachzuvollziehen)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756432</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756432</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 06 Aug 2009 14:55:39 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 14:54:34 GMT]]></title><description><![CDATA[<p>Zeig mal, wie du das Makro benutzt.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756436</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756436</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Thu, 06 Aug 2009 14:54:34 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 14:55:08 GMT]]></title><description><![CDATA[<p>Meistens bieten die Compiler die Möglichkeit, sich den Code nach dem Präprozessor anzuschauen. guck doch mal was der draus macht, und wo der Unterschied zum Handgetippten Code ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756438</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756438</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 06 Aug 2009 14:55:08 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 14:57:57 GMT]]></title><description><![CDATA[<p>Hi.<br />
@ Troll: Hier ist der Aufruf aus meiner Klasse CSpawn:</p>
<pre><code class="language-cpp">CSpawn::CSpawn(void)
{
	//m_pPython-&gt;addCommand(&quot;spawnPlayer&quot;, Spawn_spawnPlayer_py, &quot;Spawns a player into world&quot;);
	PYCMD_ADD(Spawn, spawnPlayer, &quot;Spawns a player into world&quot;);
}
</code></pre>
<p>@ pumuckl: In MSVC (2008) finde ich dazu nirgends eine Option / Möglichkeit.</p>
<p>Gruß und Danke für die wirklich schnellen Antworten <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/1756440</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756440</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 06 Aug 2009 14:57:57 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 14:59:11 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">#define PYCMD_ADD(classname, command, description) \
	m_pPython-&gt;addCommand(#command, classname##_##command##_py, description);
</code></pre>
<p>Versuchs mal so.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756442</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756442</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Thu, 06 Aug 2009 14:59:11 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 15:03:12 GMT]]></title><description><![CDATA[<p>Hi.<br />
Wow - das geht!<br />
Jedoch verstehe ich nicht so recht, wieso dass fehlende # an dieser Stelle ausschlaggebend ist.<br />
Die einzig logische Erklärung für mich wäre, dass es im Code dann so aussieht:</p>
<pre><code class="language-cpp">CSpawn::CSpawn(void)
{
    m_pPython-&gt;addComand(spawnPlayer, ...);
}
</code></pre>
<p>Und dann ist der Compiler schlau und merkt, dass spawnPlayer eine Memberfunktion ist und setzt den thispointer davor, also wäre es im Code:</p>
<pre><code class="language-cpp">CSpawn::CSpawn(void)
{
    m_pPython-&gt;addComand(this-&gt;spawnPlayer, ...);
}
</code></pre>
<p>Und deshalb meckert er, weil wahlweise die () fehlen oder halt ein &amp; um einen Pointer zu erzeugen.</p>
<p>Stimmt meine Annahme so?</p>
<p>Gruß und vielen Dank!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756449</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756449</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 06 Aug 2009 15:03:12 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 15:04:39 GMT]]></title><description><![CDATA[<p>Das # macht aus dem Makro-Argument einen String.</p>
<pre><code class="language-cpp">#define MACRO(a) #a
std::cout &lt;&lt; MACRO(ich_bin_ein_string)
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1756453</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756453</guid><dc:creator><![CDATA[Registrierter Troll]]></dc:creator><pubDate>Thu, 06 Aug 2009 15:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 15:06:38 GMT]]></title><description><![CDATA[<p>theliquidwave schrieb:</p>
<blockquote>
<p>@ pumuckl: In MSVC (2008) finde ich dazu nirgends eine Option / Möglichkeit.</p>
</blockquote>
<p>google hilft: Kommandozeilenoption /P erzeugt eine .i-Datei mit dem Präprozessoroutput</p>
<p>In der IDE: Rechtsklick aufs Projekt -&gt;Properties, dort unter Configuration Properties-&gt;C/C++-&gt;Preprocessor das Item &quot;Generate Preprocessed File&quot;</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756456</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Thu, 06 Aug 2009 15:06:38 GMT</pubDate></item><item><title><![CDATA[Reply to Marko spielt mir Streiche on Thu, 06 Aug 2009 15:08:13 GMT]]></title><description><![CDATA[<p>Ok.<br />
Vielen Dank an euch beide, ihr habt mir sehr schnell geholfen <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>Gruß</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1756460</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1756460</guid><dc:creator><![CDATA[theliquidwave]]></dc:creator><pubDate>Thu, 06 Aug 2009 15:08:13 GMT</pubDate></item></channel></rss>