<?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[[C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgende Struktur gegeben:</p>
<pre><code class="language-cpp">struct Foo
{
	int  bar1;
	char bar2[];
};
</code></pre>
<p>Von dieser Struktur möchte ich ein Array anlegen und gleich bei der Deklaration auch initalisieren.</p>
<pre><code class="language-cpp">Foo Bar[] = {
			  { 1, {'a', 'b'} },
			  { 2, {'c', 'd'} }
	        };
</code></pre>
<p>Leider bringt mir der gcc hier die Fehlermeldung:</p>
<pre><code>excess elements in aggregate initializer	main.cpp	StructArrayInitalization	line 48	C/C++ Problem
</code></pre>
<p>Meine Vermutung ist, dass da Array</p>
<pre><code class="language-cpp">// ...
char bar2[];
// ...
</code></pre>
<p>nicht wie gezeigt initalisiert werden kann.</p>
<p>Gibt es eine Möglichkeit, dass Array von Strukturen gleich bei der Deklaration zu initalisieren ohne die Arrays in der Struktur vorher anlegen zu müssen und dann über Pointer zu zuweisen?</p>
<p>Das</p>
<pre><code class="language-cpp">// ...
char a1[] = {'a', 'b'};

// Mit char* bar2 in Foo
Foo Bar[] = {
  { 1, a1},
  { 2, a2}
  // ...
};
// ...
</code></pre>
<p>möchte ich verhindern...</p>
<p>Gruß<br />
Tobi</p>
<p>P.S.<br />
STL Container scheiden in userer Umgebung leider aus... (Embedded Bereich)</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/240239/c-initalisierung-von-pod-strukturen-ein-array-von-pod-s-initalisieren</link><generator>RSS for Node</generator><lastBuildDate>Tue, 22 Sep 2026 03:14:36 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/240239.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 04 May 2009 07:32:29 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 07:32:29 GMT]]></title><description><![CDATA[<p>Hallo zusammen,</p>
<p>ich habe folgende Struktur gegeben:</p>
<pre><code class="language-cpp">struct Foo
{
	int  bar1;
	char bar2[];
};
</code></pre>
<p>Von dieser Struktur möchte ich ein Array anlegen und gleich bei der Deklaration auch initalisieren.</p>
<pre><code class="language-cpp">Foo Bar[] = {
			  { 1, {'a', 'b'} },
			  { 2, {'c', 'd'} }
	        };
</code></pre>
<p>Leider bringt mir der gcc hier die Fehlermeldung:</p>
<pre><code>excess elements in aggregate initializer	main.cpp	StructArrayInitalization	line 48	C/C++ Problem
</code></pre>
<p>Meine Vermutung ist, dass da Array</p>
<pre><code class="language-cpp">// ...
char bar2[];
// ...
</code></pre>
<p>nicht wie gezeigt initalisiert werden kann.</p>
<p>Gibt es eine Möglichkeit, dass Array von Strukturen gleich bei der Deklaration zu initalisieren ohne die Arrays in der Struktur vorher anlegen zu müssen und dann über Pointer zu zuweisen?</p>
<p>Das</p>
<pre><code class="language-cpp">// ...
char a1[] = {'a', 'b'};

// Mit char* bar2 in Foo
Foo Bar[] = {
  { 1, a1},
  { 2, a2}
  // ...
};
// ...
</code></pre>
<p>möchte ich verhindern...</p>
<p>Gruß<br />
Tobi</p>
<p>P.S.<br />
STL Container scheiden in userer Umgebung leider aus... (Embedded Bereich)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705113</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705113</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Mon, 04 May 2009 07:32:29 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 07:44:28 GMT]]></title><description><![CDATA[<p>hast du mal versucht dem char-Array eine fest eingestellte Größe von vornherein mitzugeben? So wie es jetzt ist kann der Compiler nicht bestimmen wie viel Platz das Array brauchen soll, entsprechend weiß er nicht wie groß sizeof(Foo) ist.</p>
<p>/edit: MSVC erzählt mir zu deinem Code</p>
<pre><code>:\profile\mer02113\eigene dateien\cpptests\main.cpp(13) : warning C4200: nonstandard extension used : zero-sized array in struct/union
        Cannot generate copy-ctor or copy-assignment operator when UDT contains a zero-sized array
</code></pre>
<p>Mit <code>char bar2[3];</code> compilierts problemlos.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705121</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705121</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 04 May 2009 07:44:28 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 07:49:06 GMT]]></title><description><![CDATA[<p>Hallo pumuckl,</p>
<p>danke für die Antwort.</p>
<p>Mit einer festen größe funktionierts, nur suche ich nach einer möglichkeit die größe des Arrays erst bei der deklaration des POD arrays angeben zu lassen.</p>
<p>Mir würde eine Lösung mit Ellipsen einfallen, nur die würde ich ebenso gerne verhindern...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705122</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705122</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Mon, 04 May 2009 07:49:06 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 07:56:44 GMT]]></title><description><![CDATA[<p>Tobias Gerg schrieb:</p>
<blockquote>
<p>Mit einer festen größe funktionierts, nur suche ich nach einer möglichkeit die größe des Arrays erst bei der deklaration des POD arrays angeben zu lassen.</p>
</blockquote>
<p>Simpelste Möglichkeit: template <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>
<pre><code class="language-cpp">template &lt;size_t N&gt;
struct Foo
{
    int  bar1;
    char bar2[N];
}; 

Foo&lt;2&gt; Bar[] = {
               { 1, {'a', 'b'} },
               { 2, {'c', 'd'} }
             };
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1705126</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705126</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 04 May 2009 07:56:44 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 08:18:01 GMT]]></title><description><![CDATA[<p>Jupp,</p>
<p>templates wären eine Möglichkeit...</p>
<p>Danke...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705136</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705136</guid><dc:creator><![CDATA[Tobias Gerg]]></dc:creator><pubDate>Mon, 04 May 2009 08:18:01 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 09:29:49 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/34826">@Tobias</a> Gerg:<br />
Das geht überhaupt nicht, nicht nur wegen der Initialisierung.<br />
Dein Foo ist _ein_ Typ, hat daher auch nur _eine_ Grösse (sizeof), und diese beinhaltet die Grösse des &quot;zero sized arrays&quot; nicht.</p>
<p>Wenn du also ein Foo-Array machen würdest, könntest du keine Werte in bar2 ablegen, weil kein Speicherplatz dafür vorhanden ist.</p>
<p>Zero-sized-Arrays sind ein ganz schmutziger Trick, und können sinnvoll sowieso nur am Ende von Structs verwendet werden, für die man selbst Speicher beschafft. Und eben nicht in Arrays. Daher sieht der Standard sowas auch nicht vor.</p>
<p>Verwende Zeiger stattdessen. Oder fixe Array Grössen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705166</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705166</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 04 May 2009 09:29:49 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 11:31:55 GMT]]></title><description><![CDATA[<p>Ich vermute dass er nicht zero-sized Arrays haben wollte sondern arrays mit automatischer Längebestimmung wie in</p>
<pre><code class="language-cpp">char x[] = {'a', 'b', 'c', '\0'}; // =&gt; char x[4]
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1705235</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705235</guid><dc:creator><![CDATA[pumuckl]]></dc:creator><pubDate>Mon, 04 May 2009 11:31:55 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 16:30:16 GMT]]></title><description><![CDATA[<p>Naja das kann ja erst recht nicht gehen, weil _ein_ Typ eben nur _ein_ Typ ist, und in _einem_ Typ gibts halt auch nur _ein(e)_ Länge/Grösse/Layout/...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705463</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705463</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 04 May 2009 16:30:16 GMT</pubDate></item><item><title><![CDATA[Reply to [C++ Initalisierung von POD Strukturen]: Ein Array von POD&#x27;s initalisieren on Mon, 04 May 2009 19:52:02 GMT]]></title><description><![CDATA[<p>Danke an hustbaer,</p>
<p>damit hat sich dann auch die Fehlermeldung für mich erklärt. Ich löse das ganze jetzt über templates...</p>
<p>Gruß<br />
tobi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1705562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1705562</guid><dc:creator><![CDATA[Tobi@logoff]]></dc:creator><pubDate>Mon, 04 May 2009 19:52:02 GMT</pubDate></item></channel></rss>