<?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[typedef mit unverständlichem Beispiel]]></title><description><![CDATA[<p>Hallo,<br />
beschäftige mich gerade mit typdef.</p>
<p>typedef typdefinition alias;<br />
Beispiel: typedef int* iPtr;</p>
<p>Das ist ja noch klar. Wann ich tausche alle int* mit iPtr aus. Alles noch logisch.<br />
Aber jetzt..</p>
<p>int* (*bar(void))(int,double);<br />
typedef iPtr (*iPtr_f_int_double_t)(int,double);<br />
damit: iPtr_f_int_double_t bar(void);</p>
<p>Bitte, was, wie, wo?<br />
Kann das bitte jemand gaaaanz langsam in Idiotendeutsch erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/323072/typedef-mit-unverständlichem-beispiel</link><generator>RSS for Node</generator><lastBuildDate>Thu, 16 Jul 2026 10:24:16 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/323072.rss" rel="self" type="application/rss+xml"/><pubDate>Thu, 16 Jan 2014 19:30:30 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to typedef mit unverständlichem Beispiel on Thu, 16 Jan 2014 19:30:30 GMT]]></title><description><![CDATA[<p>Hallo,<br />
beschäftige mich gerade mit typdef.</p>
<p>typedef typdefinition alias;<br />
Beispiel: typedef int* iPtr;</p>
<p>Das ist ja noch klar. Wann ich tausche alle int* mit iPtr aus. Alles noch logisch.<br />
Aber jetzt..</p>
<p>int* (*bar(void))(int,double);<br />
typedef iPtr (*iPtr_f_int_double_t)(int,double);<br />
damit: iPtr_f_int_double_t bar(void);</p>
<p>Bitte, was, wie, wo?<br />
Kann das bitte jemand gaaaanz langsam in Idiotendeutsch erklären?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377739</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377739</guid><dc:creator><![CDATA[Ratlos555]]></dc:creator><pubDate>Thu, 16 Jan 2014 19:30:30 GMT</pubDate></item><item><title><![CDATA[Reply to typedef mit unverständlichem Beispiel on Thu, 16 Jan 2014 19:48:25 GMT]]></title><description><![CDATA[<pre><code>typedef int* iPtr;
</code></pre>
<p>iPtr ist der neue int*.</p>
<pre><code>int* (*bar(void))(int,double);
</code></pre>
<p>Das deklariert eine Funktion, die heißt bar. Die Funktion hat als Parameter void (also Nichts). Diese Funktion gibt einen Zeiger zurück, der von dem folgenden Typ ist: Eine Funktion mit Argumenten int und double, die einen Zeiger zurück gibt, der aus int zeigt.</p>
<p>Puh! Das wäre ganz schön schwer von Hand zu zerlegen gewesen. Da lobe ich mir doch, dass man mit <a href="http://cdecl.ridiculousfish.com/" rel="nofollow">http://cdecl.ridiculousfish.com/</a> cheaten kann:<br />
<a href="http://cdecl.ridiculousfish.com/?q=int*+%28*bar%28void%29%29%28int%2Cdouble%29%3B+" rel="nofollow">http://cdecl.ridiculousfish.com/?q=int*+(*bar(void))(int%2Cdouble)%3B+</a></p>
<p>Weiter geht's:</p>
<pre><code>typedef iPtr (*iPtr_f_int_double_t)(int,double);
</code></pre>
<p>iPtr_f_int_double_t ist nun ein neuer Name für folgendes Konstrukt:<br />
Ein Zeiger auf eine Funktion, die (int, double) als Argument hat und einen iPtr (also einen int*) zurück gibt. Wir erkennen, dies ist gerade der Rückgabetyp von der Funktion bar, die oben deklariert wurde.</p>
<p>Somit:</p>
<pre><code>iPtr_f_int_double_t bar(void);
</code></pre>
<p>Deklariere eine Funktion bar, die void als Argument hat und iPtr_f_int_double_t zurück gibt. Wir erkennen, diese Deklaration ist identisch zu der, die weiter oben gemacht wurde. Aber wesentlich lesbarer. Oben konnte man ja kaum erkennen, was zu den Funktionsparametern gehört und was zum Rückgabetyp.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2377747</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2377747</guid><dc:creator><![CDATA[SeppJ]]></dc:creator><pubDate>Thu, 16 Jan 2014 19:48:25 GMT</pubDate></item></channel></rss>