<?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[Header und CPP Dateien?]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe wieder ein Problem mit Visual Studio 2005 (habe davor etwas mit Borland C++ Builder programmiert):</p>
<p>Ich möchte bestimmte Funktionen auslagern in Header bzw. CPP Dateien.<br />
Dazu habe ich folgene Funktionen geschrieben:</p>
<p><strong>stringElements.cpp</strong></p>
<pre><code class="language-cpp">string strflip(string inValue)
{
	string rev(inValue);
	unsigned int vlen = inValue.length();
	unsigned int n = 0;

	while(vlen &gt; 0)
	{
		rev[n] = inValue[vlen-1];
		n++;
		vlen--;
	}
	return rev;
}

string generateRandomString(unsigned int num)
{
	srand(time(0));
	string possible(&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;-=(){}[]&amp;/\|@€%!?.,_&quot;);
	string random;
	unsigned short int loading = (num/25);

	cout &lt;&lt; &quot;\n Generating key&quot;;
	cout &lt;&lt; &quot;\n\n 0% &quot;;

	for(unsigned int n = 0; n &lt; num; n++)
	{
		random = random + possible[rand()%possible.length()];

		if (n % loading == 0)
		{
			cout &lt;&lt; &quot;|&quot;;
		}
	}

	cout &lt;&lt; &quot; 100%\n&quot;;

	return random;
}
</code></pre>
<p><strong>stringElements.h</strong></p>
<pre><code class="language-cpp">#include &quot;stringElements.cpp&quot;
</code></pre>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#pragma once

#define WIN32_LEAN_AND_MEAN	

#include &lt;tchar.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;

#include &quot;stringElements.h&quot;

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
      // code

      return 0;
}
</code></pre>
<p>Visual Studio meldet beim kompilieren:</p>
<p>error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'strflip'</p>
<p>Weiß jemand warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/172971/header-und-cpp-dateien</link><generator>RSS for Node</generator><lastBuildDate>Fri, 18 Sep 2026 03:31:40 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/172971.rss" rel="self" type="application/rss+xml"/><pubDate>Sat, 10 Feb 2007 12:27:06 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 12:32:08 GMT]]></title><description><![CDATA[<p>Hi,</p>
<p>ich habe wieder ein Problem mit Visual Studio 2005 (habe davor etwas mit Borland C++ Builder programmiert):</p>
<p>Ich möchte bestimmte Funktionen auslagern in Header bzw. CPP Dateien.<br />
Dazu habe ich folgene Funktionen geschrieben:</p>
<p><strong>stringElements.cpp</strong></p>
<pre><code class="language-cpp">string strflip(string inValue)
{
	string rev(inValue);
	unsigned int vlen = inValue.length();
	unsigned int n = 0;

	while(vlen &gt; 0)
	{
		rev[n] = inValue[vlen-1];
		n++;
		vlen--;
	}
	return rev;
}

string generateRandomString(unsigned int num)
{
	srand(time(0));
	string possible(&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;-=(){}[]&amp;/\|@€%!?.,_&quot;);
	string random;
	unsigned short int loading = (num/25);

	cout &lt;&lt; &quot;\n Generating key&quot;;
	cout &lt;&lt; &quot;\n\n 0% &quot;;

	for(unsigned int n = 0; n &lt; num; n++)
	{
		random = random + possible[rand()%possible.length()];

		if (n % loading == 0)
		{
			cout &lt;&lt; &quot;|&quot;;
		}
	}

	cout &lt;&lt; &quot; 100%\n&quot;;

	return random;
}
</code></pre>
<p><strong>stringElements.h</strong></p>
<pre><code class="language-cpp">#include &quot;stringElements.cpp&quot;
</code></pre>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#pragma once

#define WIN32_LEAN_AND_MEAN	

#include &lt;tchar.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;

#include &quot;stringElements.h&quot;

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
      // code

      return 0;
}
</code></pre>
<p>Visual Studio meldet beim kompilieren:</p>
<p>error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'strflip'</p>
<p>Weiß jemand warum?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226141</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226141</guid><dc:creator><![CDATA[ac*d]]></dc:creator><pubDate>Sat, 10 Feb 2007 12:32:08 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 13:16:48 GMT]]></title><description><![CDATA[<p>Ich habe den Quellcode wie folgt verändert</p>
<p>stringElements.h</p>
<pre><code>#ifndef __STRINGELEMENTS_H__ // mit diesen Präprozessordirektiven wirst du keinen Ärger bekommen, wenn du die Includedatei in mehrere .cpp Dateien einbindest.
#define __STRINGELEMENTS_H__

#include &lt;ctime&gt;
#include &lt;string&gt;
#include &lt;iostream&gt;

using namespace std;

// Bekanntmachen der Funktionen
string strflip(string inValue);
string generateRandomString(unsigned int num);

#endif
</code></pre>
<p>stringElements.cpp</p>
<pre><code>#include &quot;stringElements.h&quot;

string strflip(string inValue)
{
    string rev(inValue); 

    // Warning wegen inkompatiblen Größen
    unsigned int vlen = inValue.length();

    unsigned int n = 0;

    while(vlen &gt; 0)
    {
        rev[n] = inValue[vlen-1];
        n++;
        vlen--;
    }
    return rev;
}

string generateRandomString(unsigned int num)
{
    // Warning wegen inkompatiblen Größen
    srand(time(0));

    string possible(&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;-=(){}[]&amp;/\\|@€%!?.,_&quot;); // ein \ als Zeichen muss man mit \\ signalisieren, da \ ein Escapezeichen ist
    string random;
    unsigned short int loading = (num/25);

    cout &lt;&lt; &quot;\n Generating key&quot;;
    cout &lt;&lt; &quot;\n\n 0% &quot;;

    for(unsigned int n = 0; n &lt; num; n++)
    {
        random = random + possible[rand()%possible.length()];

        if (n % loading == 0)
        {
            cout &lt;&lt; &quot;|&quot;;
        }
    }

    cout &lt;&lt; &quot; 100%\n&quot;;

    return random;
}
</code></pre>
<p>main.cpp</p>
<pre><code>#pragma once

#define WIN32_LEAN_AND_MEAN   

#include &lt;tchar.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;

#include &quot;stringElements.h&quot;

using namespace std;

int main(int argc, char* argv[])
{
      // code

      return 0;
}
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1226173</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226173</guid><dc:creator><![CDATA[_Vic_]]></dc:creator><pubDate>Sat, 10 Feb 2007 13:16:48 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 13:19:28 GMT]]></title><description><![CDATA[<p>Ich würd kein using namespace std; im Header machen, nur im .cpp</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226176</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226176</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 10 Feb 2007 13:19:28 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 13:20:33 GMT]]></title><description><![CDATA[<p>Wieso?<br />
Was ist daran auszusetzen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226177</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226177</guid><dc:creator><![CDATA[_Vic_]]></dc:creator><pubDate>Sat, 10 Feb 2007 13:20:33 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 13:20:45 GMT]]></title><description><![CDATA[<p>hola</p>
<p>vielleicht so:</p>
<p>stringElements.cpp</p>
<pre><code class="language-cpp">#include &quot;StringElements.h&quot;

string strflip(string inValue)
{
    string rev(inValue);
    unsigned int vlen = inValue.length();
    unsigned int n = 0;

    while(vlen &gt; 0)
    {
        rev[n] = inValue[vlen-1];
        n++;
        vlen--;
    }
    return rev;
}

string generateRandomString(unsigned int num)
{
    srand(time(0));
    string possible(&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;-=(){}[]&amp;/\|@€%!?.,_&quot;);
    string random;
    unsigned short int loading = (num/25);

    cout &lt;&lt; &quot;\n Generating key&quot;;
    cout &lt;&lt; &quot;\n\n 0% &quot;;

    for(unsigned int n = 0; n &lt; num; n++)
    {
        random = random + possible[rand()%possible.length()];

        if (n % loading == 0)
        {
            cout &lt;&lt; &quot;|&quot;;
        }
    }

    cout &lt;&lt; &quot; 100%\n&quot;;

    return random;
}
</code></pre>
<p>stringElements.h</p>
<pre><code class="language-cpp">#include &lt;string&gt;
#include &lt;iostream&gt;
...

string strflip(string inValue);
string generateRandomString(unsigned int num)
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;stringElements.h&quot;
...

int _tmain(int argc, _TCHAR* argv[])
{
      // code

      return 0;
}
</code></pre>
<p>Meep Meep</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226178</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226178</guid><dc:creator><![CDATA[Meep Meep]]></dc:creator><pubDate>Sat, 10 Feb 2007 13:20:45 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 13:23:42 GMT]]></title><description><![CDATA[<p><em>Vic</em> schrieb:</p>
<blockquote>
<p>Wieso?<br />
Was ist daran auszusetzen?</p>
</blockquote>
<p>Du machst damit in jeder Datei, wo du den Header einbindest den Namensraum auf, und vielleicht ist das nicht immer gewollt. (Für den Fall dass du mal Zeug schreibst, dass von anderen verwendet wird)</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226183</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226183</guid><dc:creator><![CDATA[THX 1138]]></dc:creator><pubDate>Sat, 10 Feb 2007 13:23:42 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 19:53:56 GMT]]></title><description><![CDATA[<p>Jedoch geht es irgendwie immernoch nicht:</p>
<p><strong>stringElements.h</strong></p>
<pre><code class="language-cpp">#ifndef __STRINGELEMENTS_H__ 
#define __STRINGELEMENTS_H__ 

String bStringFlip(String inValue);
String bGenerateString(unsigned int inNum);

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

String bStringFlip(String inValue)
{
	string rev(inValue);
	unsigned int vlen = inValue.length();
	unsigned int n = 0;

	while(vlen &gt; 0)
	{
		rev[n] = inValue[vlen-1];
		n++;
		vlen--;
	}
	return rev;
}

String bGenerateString(unsigned int inNum)
{
	srand(time(0));
	string possible(&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;-=(){}[]&amp;/\|@€%!?.,_&quot;);
	string random;
	unsigned int tmp = 0;
	unsigned short int loading = (inNum/25);

	cout &lt;&lt; &quot;\n Generating key&quot;;
	cout &lt;&lt; &quot;\n\n 0% &quot;;

	for(unsigned int n = 0; n &lt; inNum; n++)
	{
		random = random + possible[rand()%possible.length()];

		if (n % loading == 0)
		{
			cout &lt;&lt; &quot;|&quot;;
		}
	}

	cout &lt;&lt; &quot; 100%\n&quot;;

	return random;
}
</code></pre>
<p><strong>stdafx.h</strong></p>
<pre><code class="language-cpp">#pragma once

#define WIN32_LEAN_AND_MEAN		// Selten verwendete Teile der Windows-Header nicht einbinden.
#include &lt;tchar.h&gt;
#include &lt;iostream&gt;
#include &lt;fstream&gt;
#include &lt;string&gt;
#include &lt;ctime&gt;

#include &quot;stringElements.h&quot;

using namespace std;
</code></pre>
<p><strong>main.cpp</strong></p>
<pre><code class="language-cpp">#include &quot;stdafx.h&quot;

int _tmain(int argc, _TCHAR* argv[])
{
     // Code des Hauptprogramms
     system(&quot;pause&quot;);
     return 0;
}
</code></pre>
<p><strong>Fehlermeldung ist immernoch:</strong></p>
<pre><code>error C2146: Syntaxfehler: Fehlendes ';' vor Bezeichner 'bStringFlip'
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1226456</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226456</guid><dc:creator><![CDATA[ac*d]]></dc:creator><pubDate>Sat, 10 Feb 2007 19:53:56 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sat, 10 Feb 2007 20:45:47 GMT]]></title><description><![CDATA[<p>weil der Bezeichner &quot;String&quot; nicht bekannt ist (der im Übrigen auch string heisst)</p>
<p>deshalb musst du in deiner stringelements.h auch #include &lt;string&gt; einfügen.<br />
Jedoch wird der Compiler immernoch mekkern, weil sich die Klasse string im std Namensraum befindet.</p>
<p>Deshalb habe ich auch immer using namepace std; in der Headerdatei reingeschrieben <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>Also entweder du schreibst jetzt vor jedem string in der .h ein std:: oder du nimmst den using namespace Befehl.</p>
<p>PS: Versuche die Warnings auch noch zu beheben, weil die sonst zu einem unerwarteten Ergebnis führen. (Beispiel: \\ für ein \ in deiner stringelements.cpp)</p>
<p>Achja, und persönlich finde ich die Lösung mit der stdafx.h nicht so toll. Jede Headerdatei sollte meiner Meinung nach die benötigten includes Aufweisen und nicht zentral in einer Datei. Ist aber jedem selbst überlassen.</p>
<p>Gruß</p>
<p>Vic</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226481</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226481</guid><dc:creator><![CDATA[_Vic_]]></dc:creator><pubDate>Sat, 10 Feb 2007 20:45:47 GMT</pubDate></item><item><title><![CDATA[Reply to Header und CPP Dateien? on Sun, 11 Feb 2007 04:26:35 GMT]]></title><description><![CDATA[<p>Ok, vielleicht besser nochmal kurz zusammengefasst:</p>
<p>stringElements.h</p>
<pre><code class="language-cpp">#ifndef STRINGELEMENTS_H //Was wollt ihr immer mit den vielen __ davor und dahinter...
#define STRINGELEMENTS_H 
#include &lt;string&gt;

std::string bStringFlip(std::string inValue);
std::string bGenerateString(unsigned int inNum);

#endif //STRINGELEMENTS_H
</code></pre>
<p>stringElements.cpp</p>
<pre><code class="language-cpp">#include &quot;stringElements.h&quot;
#include &lt;string&gt; //nicht unbedingt notwendig, aber was ich verwende incldue ich auch da wo ichs verwende

using namespace std;  //in cpp Dateien in Ordnung

string bStringFlip(string inValue)
{
    string rev(inValue);

    for(unsigned int i=0;i&lt;inValue.length();++i)  //bisschen umgeaendert, kann aber ruhig auch so gelassen werden wies war
        rev[i] = inValue[inValue.length()-i-1]; 

    return rev;
}

string bGenerateString(unsigned int inNum)
{
    //srand(time(0));  das sollte besser an die Anfang der main()
    string possible(&quot;ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789:;-=(){}[]&amp;/\|@€%!?.,_&quot;);
    string random;
    unsigned int tmp = 0;
    unsigned short int loading = (inNum/25);

    cout &lt;&lt; &quot;\n Generating key&quot;;
    cout &lt;&lt; &quot;\n\n 0% &quot;;

    for(unsigned int n = 0; n &lt; inNum; n++)
    {
        random = random + possible[rand()%possible.length()];

        if (n % loading == 0)
            cout &lt;&lt; &quot;|&quot;;
    }

    cout &lt;&lt; &quot; 100%\n&quot;;

    return random;
}
</code></pre>
<p>main.cpp</p>
<pre><code class="language-cpp">#include &quot;stringElements.h&quot;
#include &lt;ctime&gt;
//restliche includes die du brauchst

using namespace std;

int main(){
    srand(time(0));
    //Code deines Programmes
    system(&quot;pause&quot;); //nicht portabel, schau mal in der KonsolenFAQ nach &quot;Schliessen des Konsolenfenster verhindern&quot;
    return 0;
}
</code></pre>
<p>Falls ich jetzt nichts vergessen habe sollte es jetzt funktionnieren. beachte dass deine Dateien alle im gleichen projekt enthalten sein muessen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1226628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1226628</guid><dc:creator><![CDATA[Shinja]]></dc:creator><pubDate>Sun, 11 Feb 2007 04:26:35 GMT</pubDate></item></channel></rss>