<?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[Funktionspointer (typedef) falsch ? Probleme mit __thiscall]]></title><description><![CDATA[<p>Hi.</p>
<pre><code class="language-cpp">typedef char* (__thiscall *GetTextPtr)(void* object, char* _var, DWORD_PTR junk);
</code></pre>
<p>Was ist daran falsch ? Der Compiler (MinGW) mäkelt wie folgt:</p>
<blockquote>
<p>main.cpp|9|error: expected `)' before '<em>' token|<br />
main.cpp|9|error: expected initializer before '</em>' token|</p>
</blockquote>
<p>Mit _cdecl und anderen Calling Conventions hab ich keine Probleme <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Außerdem weiß ich dass der Code mit anderen Compilern so übersetzt werden kann, mal wieder eine gcc-Macke oder sind die anderen Compiler nicht Standard-konform ?</p>
<p>Danke schon mal <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>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/244402/funktionspointer-typedef-falsch-probleme-mit-__thiscall</link><generator>RSS for Node</generator><lastBuildDate>Sat, 19 Sep 2026 04:00:09 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/244402.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jun 2009 19:05:53 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 19:05:53 GMT]]></title><description><![CDATA[<p>Hi.</p>
<pre><code class="language-cpp">typedef char* (__thiscall *GetTextPtr)(void* object, char* _var, DWORD_PTR junk);
</code></pre>
<p>Was ist daran falsch ? Der Compiler (MinGW) mäkelt wie folgt:</p>
<blockquote>
<p>main.cpp|9|error: expected `)' before '<em>' token|<br />
main.cpp|9|error: expected initializer before '</em>' token|</p>
</blockquote>
<p>Mit _cdecl und anderen Calling Conventions hab ich keine Probleme <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f615.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--confused_face"
      title=":/"
      alt="😕"
    /></p>
<p>Außerdem weiß ich dass der Code mit anderen Compilern so übersetzt werden kann, mal wieder eine gcc-Macke oder sind die anderen Compiler nicht Standard-konform ?</p>
<p>Danke schon mal <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>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734701</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734701</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Mon, 29 Jun 2009 19:05:53 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 19:07:26 GMT]]></title><description><![CDATA[<p>__thiscall ist MS spezifisch:<br />
<a href="http://msdn.microsoft.com/en-us/library/ek8tkfbw.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ek8tkfbw.aspx</a></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734703</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734703</guid><dc:creator><![CDATA[theta]]></dc:creator><pubDate>Mon, 29 Jun 2009 19:07:26 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 19:19:29 GMT]]></title><description><![CDATA[<p>theta schrieb:</p>
<blockquote>
<p>__thiscall ist MS spezifisch:<br />
<a href="http://msdn.microsoft.com/en-us/library/ek8tkfbw.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/ek8tkfbw.aspx</a></p>
</blockquote>
<p>Danke für die Antwort. <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="🙂"
    /><br />
Was wäre ein gcc Äquivalent um mit THISCALL - Calls zu arbeiten ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734708</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734708</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Mon, 29 Jun 2009 19:19:29 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 21:39:31 GMT]]></title><description><![CDATA[<p>Ich entschuldige mich für den Doppelpost.</p>
<p>Also, ich hab mir jetzt extra VC++ geladen um den Mist zu kompilieren.</p>
<p>Ergebnis:</p>
<blockquote>
<p>main.cpp(8) : error C2143: Syntaxfehler: Es fehlt ')' vor '<em>'<br />
main.cpp(8) : error C2143: Syntaxfehler: Es fehlt ';' vor '</em>'<br />
main.cpp(8) : error C2059: Syntaxfehler: ')'<br />
main.cpp(8) : error C4430: Fehlender Typspezifizierer - int wird angenommen. Hinweis: &quot;default-int&quot; wird von C++ nicht unterstützt.</p>
</blockquote>
<p>Kann mir jemand bitte etwas Nachhilfe geben? <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>Aber dass thiscall MS-spezifisch ist stimmt doch nicht?<br />
Ist doch Standard bei C++-Calls, Pointer auf das Object kommt nach ECX, Argumente werden gepushed, Funktion wird aufgerufen, Rückgabewert wandert nach EAX....</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734786</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734786</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Mon, 29 Jun 2009 21:39:31 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 22:00:49 GMT]]></title><description><![CDATA[<p>nicht die technologie - aber das makro vll ^^</p>
<p>das, was du damit vorhast sieht allerdings so aus, als ob es nicht klappen würde... ^^ erklär es vll mal kurz!?</p>
<p>bb</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734794</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734794</guid><dc:creator><![CDATA[unskilled]]></dc:creator><pubDate>Mon, 29 Jun 2009 22:00:49 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 22:09:51 GMT]]></title><description><![CDATA[<blockquote>
<p>Ist doch Standard bei C++-Calls, Pointer auf das Object kommt nach ECX, Argumente werden gepushed, Funktion wird aufgerufen, Rückgabewert wandert nach EAX....</p>
</blockquote>
<p>Es ist üblich auf x86 Hardware, aber soweit ich weiss kein Standard.</p>
<p>Das hat aber mit der Syntax die du da verwenden willst um einen Typedef auf einen Member-Function-Pointer-Typ zu setzen nix zu tun.<br />
Die ich im Übrigen so auch noch nie gesehen habe.</p>
<p>Wo hast du denn die Zeile her? Und steht da im Original auch &quot;void* object&quot;, oder vielleicht doch ein Typ?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734796</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734796</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 29 Jun 2009 22:09:51 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 29 Jun 2009 22:28:19 GMT]]></title><description><![CDATA[<p>unskilled schrieb:</p>
<blockquote>
<p>nicht die technologie - aber das makro vll ^^</p>
<p>das, was du damit vorhast sieht allerdings so aus, als ob es nicht klappen würde... ^^ erklär es vll mal kurz!?</p>
<p>bb</p>
</blockquote>
<p>Es geht um das ausführen eines Calls in einem fremdem Prozess.</p>
<p>Mit dem Debugger die Adresse die &quot;gecalled&quot; wird rausgesucht, als THISCALL identifiziert.</p>
<p>Nachdem das Funktionsgerüst steht, möchte ich die Funktionsaddresse zuweisen:</p>
<p>GetTextPtr GetText = reinterpret_cast&lt;GetTextPtr&gt;(0xDEADBEEF);</p>
<p>Ich habe eine Struktur gefunden, die das Objekt enthält das ich verwenden möchte.</p>
<p>Also möchte ich die Adresse des Objekts aus dieser Struktur fischen (was kein Problem ist) und als ersten Parameter übergeben damit es nach ECX kommt. Die restlichen 2 Argumente werden danach übergeben.</p>
<p>Der Code befindet sich in einer DLL die ich in den Speicher des Prozesses lade.</p>
<p>Ohne jetzt weiter auf Windows auszuschweifen <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>
<blockquote>
<p>Wo hast du denn die Zeile her? Und steht da im Original auch &quot;void* object&quot;, oder vielleicht doch ein Typ?</p>
</blockquote>
<p>Hab den Code alleine getippt, hatte die Probleme, kurz gegoogled, ähnlichen Source gefunden der kompiliert beilag. Muss also funktionieren.</p>
<p>Und ich wüsste nicht wie ich die Adresse eines Objektes übergeben könnte dessen Typ ich nicht direkt kenne außer über einen Voidpointer. <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>Grüße,<br />
Flo</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1734804</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1734804</guid><dc:creator><![CDATA[Icematix]]></dc:creator><pubDate>Mon, 29 Jun 2009 22:28:19 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 06 Jul 2009 12:22:02 GMT]]></title><description><![CDATA[<p>um herauszufinden welches sternchen er meint mach doch mal nach jedem sternchen eine neue zeile <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/1737911</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1737911</guid><dc:creator><![CDATA[Nickel]]></dc:creator><pubDate>Mon, 06 Jul 2009 12:22:02 GMT</pubDate></item><item><title><![CDATA[Reply to Funktionspointer (typedef) falsch ? Probleme mit __thiscall on Mon, 06 Jul 2009 15:25:36 GMT]]></title><description><![CDATA[<p>Icematix schrieb:</p>
<blockquote>
<blockquote>
<p>Wo hast du denn die Zeile her? Und steht da im Original auch &quot;void* object&quot;, oder vielleicht doch ein Typ?</p>
</blockquote>
<p>Hab den Code alleine getippt, hatte die Probleme, kurz gegoogled, ähnlichen Source gefunden der kompiliert beilag. Muss also funktionieren.</p>
<p>Und ich wüsste nicht wie ich die Adresse eines Objektes übergeben könnte dessen Typ ich nicht direkt kenne außer über einen Voidpointer. <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>
</blockquote>
<p>Wie sieht denn der &quot;ähnliche&quot; Source aus, der funktioniert?</p>
<p>Ansonsten: du solltest wohl besser &quot;Interfaces&quot; (abstrakte Basisklassen) verwenden.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1738003</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1738003</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 06 Jul 2009 15:25:36 GMT</pubDate></item></channel></rss>