<?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[einige syntaxfragen (typedef, struct)]]></title><description><![CDATA[<p>hi!<br />
ich hab einige verständnissfragen zur syntax einer sdk, die ich gerade versuche zu verstehen.</p>
<p>ein codefragment was da vorkommt geht etwa so:</p>
<pre><code class="language-cpp">typedef struct DriverInfo
{
	typ1 bla;
	typ2 blub;
	...
}DriverInfo;
</code></pre>
<p>warum steht das der Name DriverInfo sowohl nach dem struct als auch am ende der struct-definition?<br />
hat das irgendeinen tieferen sinn?<br />
und aus dem typedef werd ich auch nicht so richtig schlau. warum typedeffen die das? was bewirkt das typedef davor genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/132053/einige-syntaxfragen-typedef-struct</link><generator>RSS for Node</generator><lastBuildDate>Thu, 27 Aug 2026 10:56:45 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/132053.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 07 Jan 2006 20:36:09 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 20:36:09 GMT]]></title><description><![CDATA[<p>hi!<br />
ich hab einige verständnissfragen zur syntax einer sdk, die ich gerade versuche zu verstehen.</p>
<p>ein codefragment was da vorkommt geht etwa so:</p>
<pre><code class="language-cpp">typedef struct DriverInfo
{
	typ1 bla;
	typ2 blub;
	...
}DriverInfo;
</code></pre>
<p>warum steht das der Name DriverInfo sowohl nach dem struct als auch am ende der struct-definition?<br />
hat das irgendeinen tieferen sinn?<br />
und aus dem typedef werd ich auch nicht so richtig schlau. warum typedeffen die das? was bewirkt das typedef davor genau?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960146</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960146</guid><dc:creator><![CDATA[prokaion]]></dc:creator><pubDate>Sat, 07 Jan 2006 20:36:09 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 20:41:13 GMT]]></title><description><![CDATA[<p>Das ist C.</p>
<p>Da musste man noch &quot;struct Foo variable&quot; schreiben, um Variablen anzulegen, etc. Deswegen hat ma oft getypedeft, um das ganze so wie normale Typen verwenden zu können, also wie du es gewohnt bist &quot;Foo variable&quot;.<br />
In C++ ist es sinnlos</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960154</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960154</guid><dc:creator><![CDATA[Helium]]></dc:creator><pubDate>Sat, 07 Jan 2006 20:41:13 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 21:27:08 GMT]]></title><description><![CDATA[<p>Ach so!<br />
na das erklärt warum mir der code manchmal so merkwürdig vorkommt! c kenn ich nicht!<br />
eigentlich ist das ja ne c++ sdk.<br />
naja, wie auch immer, danach kommt noch ein stück code das ich nicht verstehe:</p>
<pre><code class="language-cpp">DriverInfo asioDriverInfo = {0};
</code></pre>
<p>was soll das {0}? ein einelementiges array? wo sind dann die eckigen klammern?? <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=":confused:"
      alt="😕"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/960194</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960194</guid><dc:creator><![CDATA[prokaion]]></dc:creator><pubDate>Sat, 07 Jan 2006 21:27:08 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 21:44:13 GMT]]></title><description><![CDATA[<p>prokaion schrieb:</p>
<blockquote>
<p>Ach so!<br />
na das erklärt warum mir der code manchmal so merkwürdig vorkommt! c kenn ich nicht!<br />
eigentlich ist das ja ne c++ sdk.<br />
naja, wie auch immer, danach kommt noch ein stück code das ich nicht verstehe:</p>
<pre><code class="language-cpp">DriverInfo asioDriverInfo = {0};
</code></pre>
<p>was soll das {0}? ein einelementiges array? wo sind dann die eckigen klammern?? <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=":confused:"
      alt="😕"
    /></p>
</blockquote>
<p>Eine neue Instanz names asioDriverInfo wird erstellt und der Kopierkonstruktor aufgerufen. Könnte man auch so schreiben:</p>
<pre><code class="language-cpp">DriverInfo asioDriverInfo({0});
</code></pre>
<p>mfg.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960211</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960211</guid><dc:creator><![CDATA[joomoo]]></dc:creator><pubDate>Sat, 07 Jan 2006 21:44:13 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 22:38:00 GMT]]></title><description><![CDATA[<p>ok, verstehe, aber so einen initialisierungsparameter hab ich noch nie gesehen: &quot;{0}&quot; .<br />
eigentlich gibts ja keinen ctor der irgendeinen parameter verlangt...</p>
<p>warum reicht nicht das übliche</p>
<pre><code class="language-cpp">DriverInfo asioDriverInfo;
</code></pre>
<p>?<br />
was bedeutet {0} ???<br />
mfg</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960246</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960246</guid><dc:creator><![CDATA[prokaion]]></dc:creator><pubDate>Sat, 07 Jan 2006 22:38:00 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 22:44:02 GMT]]></title><description><![CDATA[<p>prokaion schrieb:</p>
<blockquote>
<p>eigentlich gibts ja keinen ctor der irgendeinen parameter verlangt...</p>
</blockquote>
<p>Exakt, deshalb ist das, was joomoo geschrieben hat, auch Unsinn.</p>
<pre><code class="language-cpp">DriverInfo asioDriverInfo = {0};
</code></pre>
<p>In den geschweiften Klammern wird einfach die Initialisierung durchgeführt. Dh, du kannst jeden Member damit explizit initialisieren. Das funktioniert aber nur, sofern du keinen ctor deklariert hast. Alle Member, für die nichts angegeben wurde, werden nullinitialisiert. Und genau das wird bei deinem Beispiel auch gemacht. Genau genommen würde sogar schon</p>
<pre><code class="language-cpp">DriverInfo asioDriverInfo = {};
</code></pre>
<p>reichen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/960279</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960279</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Sat, 07 Jan 2006 22:44:02 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Sat, 07 Jan 2006 23:06:59 GMT]]></title><description><![CDATA[<p>cool!<br />
sowas hab ich schon fast geahnt...<br />
damit kann man also alle member mit 0 initialisieren!</p>
<p>werden die member wirklich auch mit 0 initialisiert, wenn man<br />
DriverInfo asioDriverInfo = {}; schreiben würde?</p>
<p>danke! hab ich noch nie von gehört!</p>
<p>danke an alle für die 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/960292</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/960292</guid><dc:creator><![CDATA[prokaion]]></dc:creator><pubDate>Sat, 07 Jan 2006 23:06:59 GMT</pubDate></item><item><title><![CDATA[Reply to einige syntaxfragen (typedef, struct) on Mon, 09 Jan 2006 07:35:05 GMT]]></title><description><![CDATA[<p>prokaion schrieb:</p>
<blockquote>
<p>werden die member wirklich auch mit 0 initialisiert, wenn man<br />
DriverInfo asioDriverInfo = {}; schreiben würde?</p>
</blockquote>
<p>Naja, ganz so pauschal kann man das nicht sagen. Eine Struktur kann ja nicht nur int's und dergleichen enthalten, sondern auch andere komplexe Objekte. Der Standard spricht hier von <em>value-initialized</em> bei Membern, die nicht explizit initialisiert werden. Und das bedeutet letztendlich Folgendes:</p>
<blockquote>
<p>To value-initialize an object of type T means:<br />
— if T is a class type (clause 9) with a user-declared constructor (12.1), then the default constructor for T is called (and the initialization is ill-formed if T has no accessible default constructor);<br />
— if T is a non-union class type without a user-declared constructor, then every non-static data member and base-class component of T is value-initialized;<br />
— if T is an array type, then each element is value-initialized;<br />
— otherwise, the object is zero-initialized</p>
</blockquote>
<p>Was letztendlich soviel bedeutet wie, wenn der Member kein Objekt einer Klasse ist, welche einen benutzerdefinierten ctor hat, dann wird nullinitialisiert. Und das wiederum bedeutet Folgendes:</p>
<blockquote>
<p>To zero-initialize an object of type T means:<br />
— if T is a scalar type (3.9), the object is set to the value of 0 (zero) converted to T;<br />
— if T is a non-union class type, each nonstatic data member and each base-class subobject is zero-initialized;<br />
— if T is a union type, the object’s first named data member is zero-initialized;<br />
— if T is an array type, each element is zero-initialized;<br />
— if T is a reference type, no initialization is performed.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/961477</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/961477</guid><dc:creator><![CDATA[groovemaster]]></dc:creator><pubDate>Mon, 09 Jan 2006 07:35:05 GMT</pubDate></item></channel></rss>