<?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[static const char *var[] in header datei]]></title><description><![CDATA[<p>hola leute</p>
<p>wollte mir paar zeichenketten in ner header datei erstellen die ich brauche.</p>
<pre><code class="language-cpp">static const char *var[] = { &quot;test1&quot;,&quot;test2&quot;,&quot;test3&quot;};
</code></pre>
<p>da hat mir der kompiler warnungen raus</p>
<pre><code>[C++ Warnung] cgi_helper.h(11): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
</code></pre>
<p>wie mach ich das richtig ? steh grad maechtig auf dem schlauch</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/167019/static-const-char-var-in-header-datei</link><generator>RSS for Node</generator><lastBuildDate>Tue, 15 Sep 2026 18:15:18 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/167019.rss" rel="self" type="application/rss+xml"/><pubDate>Tue, 05 Dec 2006 17:35:07 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 17:35:07 GMT]]></title><description><![CDATA[<p>hola leute</p>
<p>wollte mir paar zeichenketten in ner header datei erstellen die ich brauche.</p>
<pre><code class="language-cpp">static const char *var[] = { &quot;test1&quot;,&quot;test2&quot;,&quot;test3&quot;};
</code></pre>
<p>da hat mir der kompiler warnungen raus</p>
<pre><code>[C++ Warnung] cgi_helper.h(11): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
</code></pre>
<p>wie mach ich das richtig ? steh grad maechtig auf dem schlauch</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187464</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187464</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Tue, 05 Dec 2006 17:35:07 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 18:16:34 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>die Deklaration des Arrays gehört in die Headerdatei, die Implementation samt Initialisierung gehört ins die cpp-Datei</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187476</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187476</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 05 Dec 2006 18:16:34 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 18:33:36 GMT]]></title><description><![CDATA[<p>re</p>
<p>hab ich mir auch gedacht, aber ich kriegs einfach nicht hin.</p>
<p>wie muss das dann in den beiden dateien aussehen ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187482</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187482</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Tue, 05 Dec 2006 18:33:36 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 18:54:09 GMT]]></title><description><![CDATA[<p>Hallo</p>
<pre><code class="language-cpp">// Header
static const char *var[3];

// Implementation
const char *var[3]; = { &quot;test1&quot;,&quot;test2&quot;,&quot;test3&quot;};
</code></pre>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187492</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187492</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 05 Dec 2006 18:54:09 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 19:11:10 GMT]]></title><description><![CDATA[<p>re</p>
<p>naja so weit war ich auch schon. aber da bekomme ich auch immer fehlermeldungen.</p>
<pre><code>[C++ Warnung] cgi_helper.h(11): W8058 Präcompilierter Header: Initialisierte Daten im Header kann nicht erzeugt werden
[C++ Fehler] cgi_helper.cpp(3): E2238 Bezeichner 'var' mehrfach deklariert
[C++ Fehler] cgi_helper.h(11): E2344 'var' bereits deklariert
</code></pre>
<p>'var' gibt es ansonsten nirgendwo.</p>
<p>akari schrieb:</p>
<blockquote>
<p>// Implementation</p>
<pre><code class="language-cpp">const char *var[3]; = { &quot;test1&quot;,&quot;test2&quot;,&quot;test3&quot;};
</code></pre>
</blockquote>
<p>das erste ';' war wahrscheinlich nicht beabsichtigt oder ? ;o)</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187503</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187503</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Tue, 05 Dec 2006 19:11:10 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 19:16:59 GMT]]></title><description><![CDATA[<p>Hallo</p>
<p>ja, das Semikolon muß da noch weg.<br />
Kann es sein, das du in der Header-Datei die Include-Guards vergessen hast?</p>
<p>bis bald<br />
akari</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187505</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187505</guid><dc:creator><![CDATA[akari]]></dc:creator><pubDate>Tue, 05 Dec 2006 19:16:59 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 19:23:26 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>wie mach ich das richtig ? steh grad maechtig auf dem schlauch</p>
</blockquote>
<p>- verzichte auf vorkompilierte Header, oder<br />
- begrenze den vorkompilierten Header auf solche Programmteile, die keine solchen initialierten Daten enthalten, oder<br />
- teile auf in Deklaration und Definition und verschiebe Letztere aus dem Header heraus</p>
<p>Lezteres wird im Allgemeinen zu empfehlen sein. Allerdings muss dazu auf static verzichtet und statt dessen extern verwendet werden (mit static/auto/register oder ohne storage-Bezeichner ist es, außerhalb von Klassendefinitionen, immer eine Definition). Die Verwendung von static für Bezeichner im Namensraum gilt in C++ ohnehin als obsolet. Soweit dem nicht ein unfähiger Compiler im Wege steht, sind statt dessen in der Regel unbenannte namespaces zu benutzen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187507</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187507</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 05 Dec 2006 19:23:26 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 19:23:23 GMT]]></title><description><![CDATA[<p>noe, die sind vorhanden.<br />
hier mal die derzeitige header und cpp datei</p>
<p>header:</p>
<pre><code class="language-cpp">#ifndef cgi_helperH
#define cgi_helperH

#include &lt;stdlib.h&gt;
#include &lt;string&gt;
#include &lt;vector&gt;

enum ReqMethod { get = 0, post, unknown, undef };

static const char *var[3]; 

inline ReqMethod GetRequestMethod(void)
{
   ...
}

inline const char* GetRequestString(ReqMethod req)
{
   ...
}

inline std::string GetParameter(ReqMethod req)
{
   ...
}

class Params
{
   public:
      std::string key;
      std::string value;
};

void ParseParams(const std::string param, std::vector&lt;Params&gt; &amp;vec);

#endif
</code></pre>
<p>und die cpp</p>
<pre><code class="language-cpp">#include &quot;cgi_helper.h&quot;

const char *var[3] = { &quot;test1&quot;,&quot;test2&quot;,&quot;test3&quot;};

void ParseParams(const std::string param, std::vector&lt;Params&gt; &amp;vec)
{
   ...
}
</code></pre>
<p>vielleicht sieht da jemand den fehler</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187509</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187509</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Tue, 05 Dec 2006 19:23:23 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 19:57:47 GMT]]></title><description><![CDATA[<p>Mach evtl mal das static weg. Macht imho wenig Sinn, da static auf globaler Ebene die Variable modullokal macht, und ein Header ist ja nicht zwangsläufig auf ein Modul beschränkt...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187529</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187529</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 05 Dec 2006 19:57:47 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 20:01:20 GMT]]></title><description><![CDATA[<p>Ich verweise noch mal auf meinen Beitrag weiter oben. Die Verwendung von static im Header wird in jedem Falle eine Verletzung der ODR weiter unten bewirken.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187532</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187532</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 05 Dec 2006 20:01:20 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 20:03:31 GMT]]></title><description><![CDATA[<p>schon mal was von extern gehört? stellt euch mal vor ihr habt mehrere module, die alle den header includieren, was passiert? Alle haben ein eigenes array, da hilft auch ein #ifndef nicht, da muss extern her. Also im header Extern vor die Variable schreiben, und dann in der cpp Datei ohne extern anlegen, und mit werten befüllen. Das gilt für alle globalen Variablen, obwohl eigentlich auf globale variablen möglichst verzichtet werden sollte, und auch meißtens getan werden kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187535</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187535</guid><dc:creator><![CDATA[Krux]]></dc:creator><pubDate>Tue, 05 Dec 2006 20:03:31 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 20:21:34 GMT]]></title><description><![CDATA[<p>*brettvormkopf*</p>
<p>Also static weg und extern davor, damit wär das dann geklärt :p Ist schon spät heute, was? <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>
]]></description><link>https://www.c-plusplus.net/forum/post/1187551</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187551</guid><dc:creator><![CDATA[LordJaxom]]></dc:creator><pubDate>Tue, 05 Dec 2006 20:21:34 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 21:11:17 GMT]]></title><description><![CDATA[<p>re</p>
<p>wie sieht es eigendlich aus wenn man folgendes macht.<br />
in der header:</p>
<pre><code class="language-cpp">inline const char* GetRequestString(ReqMethod req)
{
   static const char *ReqMethodString[] = {&quot;GET&quot;, &quot;POST&quot;, &quot;UNKNOWN&quot;, &quot;UNDEF&quot;};
   return ReqMethodString[req];
}
</code></pre>
<p>was passiert da dann mit dem static array, wenn geinlined (was fuer ein tolles wort) wird ?</p>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1187579</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187579</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Tue, 05 Dec 2006 21:11:17 GMT</pubDate></item><item><title><![CDATA[Reply to static const char *var[] in header datei on Tue, 05 Dec 2006 21:46:10 GMT]]></title><description><![CDATA[<p>Meep Meep schrieb:</p>
<blockquote>
<p>re</p>
<p>wie sieht es eigendlich aus wenn man folgendes macht.<br />
in der header:</p>
<pre><code class="language-cpp">inline const char* GetRequestString(ReqMethod req)
{
   static const char *ReqMethodString[] = {&quot;GET&quot;, &quot;POST&quot;, &quot;UNKNOWN&quot;, &quot;UNDEF&quot;};
   return ReqMethodString[req];
}
</code></pre>
<p>was passiert da dann mit dem static array, wenn geinlined (was fuer ein tolles wort) wird ?</p>
<p>Meep Meep</p>
</blockquote>
<p>inline-Substitution ändert die Semantik eines Programmes nicht. Explizit (7.1.2/4):</p>
<p>ISO/IEC 14882:2003 schrieb:</p>
<blockquote>
<p>A static local variable in an extern inline function always refers to the same object. A string literal in an extern inline function is the same object in different translation units.</p>
</blockquote>
]]></description><link>https://www.c-plusplus.net/forum/post/1187592</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1187592</guid><dc:creator><![CDATA[camper]]></dc:creator><pubDate>Tue, 05 Dec 2006 21:46:10 GMT</pubDate></item></channel></rss>