<?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[hilfe!!! compiler vebuggt?]]></title><description><![CDATA[<p>hallo,<br />
ich weiß nicht mehr weiter<br />
seht euch mal folgenden code an:</p>
<pre><code class="language-cpp">int getinfo(int argc, char *argv[])
{
	if (argc == 1)//wenn programm in konsole ohne argumente gestartet wird
	{
		cerr &lt;&lt; &quot;\nFEHLER\nDas Programm &quot; &lt;&lt; argv[0] &lt;&lt; &quot; muss mit Argumenten aufgerufen werden.\nMit \&quot;&quot; &lt;&lt; argv[0] &lt;&lt; &quot; -h\&quot; erfahren Sie mehr.\n&quot;;
		return 1;
	}

	if (argc &gt; 1)
	{
		std::vector&lt;std::string&gt; arguments(argv, argv + argc);
		if (arguments.at(1) == &quot;-h&quot;)
		{
			cout &lt;&lt; endl;
			cout &lt;&lt; argv[0] &lt;&lt; &quot; Pfad Modus Passwort&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\tPfad:\n\t\tfür Dateien:\tbla/blub.xyz\n\t\tfür Ordner:\tbla/blub/&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\tModus:\n\t\tzum Verschlüsseln:\tver\n\t\tzum Entschlüsseln:\tent\n\t\tfür Lodatei \&quot;log\&quot;  anhängen&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\tPasswort\n\t\ta-z\n\t\t0-9\n\t\t12 Zeichen maximal&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			return 1;
		}
	}

int i=0,j=0,k=0;

//pfad
char *pathread_p;
char pathread[1000];
	if (argc &gt; 0){pathread_p = argv[1];}
	snprintf(pathread, 1000, &quot;%s&quot;, pathread_p);

//ordner --&gt;1/0 aus pfad ableiten
bool ordner=false;
	if (pathread[strlen(pathread) - 1] == '/'){ordner = true;}//feststellen, ob ein ordner oder eine datei vorliegt

//modus
char *char_modus_p;
char char_modus[50];
	if (argc &gt; 0){char_modus_p = argv[2];}
	snprintf(char_modus, 50, &quot;%s&quot;, char_modus_p);

bool verschluesseln, entschluesseln, log;
	while (true)
	{
		if ((char_modus[0] == 'v')&amp;&amp;(char_modus[1] == 'e')&amp;&amp;(char_modus[2] == 'r')){verschluesseln = true;}
		else {verschluesseln = false;}
		if ((char_modus[0] == 'e')&amp;&amp;(char_modus[1] == 'n')&amp;&amp;(char_modus[2] == 't')){entschluesseln = true;}
		else {entschluesseln = false;}
		if ((char_modus[3] == 'l')&amp;&amp;(char_modus[4] == 'o')&amp;&amp;(char_modus[5] == 'g')){log = true;}
		else {log = false;}
		if (((verschluesseln == true)||(entschluesseln == true))&amp;&amp;((log == true)||(char_modus[3] == '\0'))){break;}
		if (argc &gt; 0)
		{
			cerr &lt;&lt; &quot;\nFEHLER\n&quot; &lt;&lt; char_modus_p &lt;&lt; &quot; ist kein gültiger Modus.\nGeben Sie \&quot;ver\&quot; zum verschluesseln bzw. \&quot;ent\&quot; zum entschluesseln ein ggf. gefolgt durch \&quot;log\&quot;, um eine Logdatei zu erzeugen.\n&quot;;
			return 1;
		}
	}

//passwort
char code[CODELENGTH];
char *code_safe_p;
bool check[CODELENGTH];
for (int i=0; i&lt;CODELENGTH; i++){check[i] = false;}
char zahlenundbuchstaben[36] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
	while (true)
	{
		if (argc &gt; 0){code_safe_p = argv[3];}
		snprintf(code, CODELENGTH, &quot;%s&quot;, code_safe_p);
		while (true)
		{
			if (strlen(code) == CODELENGTH){break;}
			code[strlen(code)] = '8';
		}
		//new
		for (int i=0; i&lt;CODELENGTH; i++)
		{
			for (int j=0; j&lt;36; j++)
			{
				if (code[i] == zahlenundbuchstaben[j]){check[i] = true;}
			}
		}
cout &lt;&lt; check[11] &lt;&lt; endl;
cout &lt;&lt; code[11] &lt;&lt; endl;
//check[11] = false;
//if (check[11] = false){cout &lt;&lt; &quot;blablub&quot;; code[11] = '8';}
//code[11] = '8';
		for (int i=0; i&lt;CODELENGTH; i++)
		{
			if (check[i] = false){cout &lt;&lt; &quot;C++ works again&quot; &lt;&lt; endl; code[i] = '8';}
		};
cout &lt;&lt; code[11] &lt;&lt; endl;
cout &lt;&lt; code &lt;&lt; endl;
		break;
		//new end
		/*k=0;
		for (i=0; i&lt;CODELENGTH; i++)//ueberpruefen der zeichen von code
		{
			for (j=0; j&lt;36; j++)
			{
				if (code[i] == zahlenundbuchstaben[j]){k++;}
				if (k == CODELENGTH){break;}
			}
			if (k == CODELENGTH){break;}
		}
		if (k == CODELENGTH){break;}*/
		if (argc &gt; 0)
		{
			cerr &lt;&lt; &quot;\nFEHLER\nDer Code kann maximal &quot; &lt;&lt; CODELENGTH &lt;&lt; &quot; Zahlen oder / und kleine Buchstaben enthalten.\n&quot;;
			return 1;
		}
	}

	//codeit(pathread, verschluesseln, entschluesseln, code, ordner, log, argc, argv);
	return 0;
}
</code></pre>
<p>meine fehler treten in //passowrt auf<br />
von der kommandozeile wird ein passwort abgefragt, maximal CODELENGTH (12) zeichen in code kopiert und mit 8en auf 12 zeichen aufgefüllt. sollte ein zeichen von code nicht den zeichen in buchstabenundzahlen entsprechen, so wird stattdessen eine 8 verwendet. leider klappt das nicht so ganz...</p>
<pre><code class="language-cpp">cout &lt;&lt; check[11] &lt;&lt; endl;
cout &lt;&lt; code[11] &lt;&lt; endl;
//check[11] = false;
//if (check[11] = false){cout &lt;&lt; &quot;blablub&quot;; code[11] = '8';}
//code[11] = '8';
		for (int i=0; i&lt;CODELENGTH; i++)
		{
			if (check[i] = false){cout &lt;&lt; &quot;C++ works again&quot; &lt;&lt; endl; code[i] = '8';}
		};
cout &lt;&lt; code[11] &lt;&lt; endl;
cout &lt;&lt; code &lt;&lt; endl;
</code></pre>
<p>wenn man das programm folgendermaßen aufruft:</p>
<pre><code>./codeit bla.txt ver piaegenolf
</code></pre>
<p>ist check[11] bei mir immer false!<br />
obwohl code[11] eigentlich eine 8 sein sollte, bekomme ich in der konsole statt der 8 immer ein ? mit nem quadrat auf der ecke stehend ausgegeben</p>
<p>ist das mein fehler oder bin ich gaga, oder ahhh!!!!<br />
ist das mein fehler oder baut mein compiler da mist?<br />
wenn ich code[11] manuell setze geht es mit der auskommentierten abfrage if()... geht es jedoch nicht.</p>
<p>weiß jemand mehr, als ich?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/267794/hilfe-compiler-vebuggt</link><generator>RSS for Node</generator><lastBuildDate>Wed, 02 Sep 2026 07:02:02 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/267794.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 30 May 2010 15:23:41 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:23:41 GMT]]></title><description><![CDATA[<p>hallo,<br />
ich weiß nicht mehr weiter<br />
seht euch mal folgenden code an:</p>
<pre><code class="language-cpp">int getinfo(int argc, char *argv[])
{
	if (argc == 1)//wenn programm in konsole ohne argumente gestartet wird
	{
		cerr &lt;&lt; &quot;\nFEHLER\nDas Programm &quot; &lt;&lt; argv[0] &lt;&lt; &quot; muss mit Argumenten aufgerufen werden.\nMit \&quot;&quot; &lt;&lt; argv[0] &lt;&lt; &quot; -h\&quot; erfahren Sie mehr.\n&quot;;
		return 1;
	}

	if (argc &gt; 1)
	{
		std::vector&lt;std::string&gt; arguments(argv, argv + argc);
		if (arguments.at(1) == &quot;-h&quot;)
		{
			cout &lt;&lt; endl;
			cout &lt;&lt; argv[0] &lt;&lt; &quot; Pfad Modus Passwort&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\tPfad:\n\t\tfür Dateien:\tbla/blub.xyz\n\t\tfür Ordner:\tbla/blub/&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\tModus:\n\t\tzum Verschlüsseln:\tver\n\t\tzum Entschlüsseln:\tent\n\t\tfür Lodatei \&quot;log\&quot;  anhängen&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			cout &lt;&lt; &quot;\tPasswort\n\t\ta-z\n\t\t0-9\n\t\t12 Zeichen maximal&quot;;
			cout &lt;&lt; endl;
			cout &lt;&lt; endl;
			return 1;
		}
	}

int i=0,j=0,k=0;

//pfad
char *pathread_p;
char pathread[1000];
	if (argc &gt; 0){pathread_p = argv[1];}
	snprintf(pathread, 1000, &quot;%s&quot;, pathread_p);

//ordner --&gt;1/0 aus pfad ableiten
bool ordner=false;
	if (pathread[strlen(pathread) - 1] == '/'){ordner = true;}//feststellen, ob ein ordner oder eine datei vorliegt

//modus
char *char_modus_p;
char char_modus[50];
	if (argc &gt; 0){char_modus_p = argv[2];}
	snprintf(char_modus, 50, &quot;%s&quot;, char_modus_p);

bool verschluesseln, entschluesseln, log;
	while (true)
	{
		if ((char_modus[0] == 'v')&amp;&amp;(char_modus[1] == 'e')&amp;&amp;(char_modus[2] == 'r')){verschluesseln = true;}
		else {verschluesseln = false;}
		if ((char_modus[0] == 'e')&amp;&amp;(char_modus[1] == 'n')&amp;&amp;(char_modus[2] == 't')){entschluesseln = true;}
		else {entschluesseln = false;}
		if ((char_modus[3] == 'l')&amp;&amp;(char_modus[4] == 'o')&amp;&amp;(char_modus[5] == 'g')){log = true;}
		else {log = false;}
		if (((verschluesseln == true)||(entschluesseln == true))&amp;&amp;((log == true)||(char_modus[3] == '\0'))){break;}
		if (argc &gt; 0)
		{
			cerr &lt;&lt; &quot;\nFEHLER\n&quot; &lt;&lt; char_modus_p &lt;&lt; &quot; ist kein gültiger Modus.\nGeben Sie \&quot;ver\&quot; zum verschluesseln bzw. \&quot;ent\&quot; zum entschluesseln ein ggf. gefolgt durch \&quot;log\&quot;, um eine Logdatei zu erzeugen.\n&quot;;
			return 1;
		}
	}

//passwort
char code[CODELENGTH];
char *code_safe_p;
bool check[CODELENGTH];
for (int i=0; i&lt;CODELENGTH; i++){check[i] = false;}
char zahlenundbuchstaben[36] = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
	while (true)
	{
		if (argc &gt; 0){code_safe_p = argv[3];}
		snprintf(code, CODELENGTH, &quot;%s&quot;, code_safe_p);
		while (true)
		{
			if (strlen(code) == CODELENGTH){break;}
			code[strlen(code)] = '8';
		}
		//new
		for (int i=0; i&lt;CODELENGTH; i++)
		{
			for (int j=0; j&lt;36; j++)
			{
				if (code[i] == zahlenundbuchstaben[j]){check[i] = true;}
			}
		}
cout &lt;&lt; check[11] &lt;&lt; endl;
cout &lt;&lt; code[11] &lt;&lt; endl;
//check[11] = false;
//if (check[11] = false){cout &lt;&lt; &quot;blablub&quot;; code[11] = '8';}
//code[11] = '8';
		for (int i=0; i&lt;CODELENGTH; i++)
		{
			if (check[i] = false){cout &lt;&lt; &quot;C++ works again&quot; &lt;&lt; endl; code[i] = '8';}
		};
cout &lt;&lt; code[11] &lt;&lt; endl;
cout &lt;&lt; code &lt;&lt; endl;
		break;
		//new end
		/*k=0;
		for (i=0; i&lt;CODELENGTH; i++)//ueberpruefen der zeichen von code
		{
			for (j=0; j&lt;36; j++)
			{
				if (code[i] == zahlenundbuchstaben[j]){k++;}
				if (k == CODELENGTH){break;}
			}
			if (k == CODELENGTH){break;}
		}
		if (k == CODELENGTH){break;}*/
		if (argc &gt; 0)
		{
			cerr &lt;&lt; &quot;\nFEHLER\nDer Code kann maximal &quot; &lt;&lt; CODELENGTH &lt;&lt; &quot; Zahlen oder / und kleine Buchstaben enthalten.\n&quot;;
			return 1;
		}
	}

	//codeit(pathread, verschluesseln, entschluesseln, code, ordner, log, argc, argv);
	return 0;
}
</code></pre>
<p>meine fehler treten in //passowrt auf<br />
von der kommandozeile wird ein passwort abgefragt, maximal CODELENGTH (12) zeichen in code kopiert und mit 8en auf 12 zeichen aufgefüllt. sollte ein zeichen von code nicht den zeichen in buchstabenundzahlen entsprechen, so wird stattdessen eine 8 verwendet. leider klappt das nicht so ganz...</p>
<pre><code class="language-cpp">cout &lt;&lt; check[11] &lt;&lt; endl;
cout &lt;&lt; code[11] &lt;&lt; endl;
//check[11] = false;
//if (check[11] = false){cout &lt;&lt; &quot;blablub&quot;; code[11] = '8';}
//code[11] = '8';
		for (int i=0; i&lt;CODELENGTH; i++)
		{
			if (check[i] = false){cout &lt;&lt; &quot;C++ works again&quot; &lt;&lt; endl; code[i] = '8';}
		};
cout &lt;&lt; code[11] &lt;&lt; endl;
cout &lt;&lt; code &lt;&lt; endl;
</code></pre>
<p>wenn man das programm folgendermaßen aufruft:</p>
<pre><code>./codeit bla.txt ver piaegenolf
</code></pre>
<p>ist check[11] bei mir immer false!<br />
obwohl code[11] eigentlich eine 8 sein sollte, bekomme ich in der konsole statt der 8 immer ein ? mit nem quadrat auf der ecke stehend ausgegeben</p>
<p>ist das mein fehler oder bin ich gaga, oder ahhh!!!!<br />
ist das mein fehler oder baut mein compiler da mist?<br />
wenn ich code[11] manuell setze geht es mit der auskommentierten abfrage if()... geht es jedoch nicht.</p>
<p>weiß jemand mehr, als ich?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904544</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904544</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Sun, 30 May 2010 15:23:41 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:29:18 GMT]]></title><description><![CDATA[<p>Ich hab mir den Wust jetzt nicht gegeben, aber das ist mir aufgefallen:</p>
<pre><code class="language-cpp">if (check[i] = false)
</code></pre>
<p>Das ist wohl nicht Absicht, oder? Vergleichen tut man mit &quot;==&quot;...<br />
Aber prinzipiell ist das deine Aufgabe, zu debuggen. Mit nem Debugger kannst du wunderbar dein Programm Stück für Stück durchlaufen lassen und die Werte der Variablen anschauen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904547</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904547</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sun, 30 May 2010 15:29:18 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:29:45 GMT]]></title><description><![CDATA[<p>sudo rm -rf schrieb:</p>
<blockquote>
<p>seht euch mal folgenden code an:</p>
</blockquote>
<p>Ne das ist zu viel. Minimiere deinen Code. Entferne alles außer der stelle, wo dein Problem ist. Vielleicht findest du dann selber die lösung.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904548</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904548</guid><dc:creator><![CDATA[neoexpert]]></dc:creator><pubDate>Sun, 30 May 2010 15:29:45 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:32:05 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/20104">@l</a>'abra d'or<br />
ahh ich vollfosten<br />
danke, das hat mein problem gelöst!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904549</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904549</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Sun, 30 May 2010 15:32:05 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:32:11 GMT]]></title><description><![CDATA[<p>Und nur so: es liegt nie am Compiler (es sei denn, du verwendest den C++Builder), sondern immer an deinem Code.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904550</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904550</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 30 May 2010 15:32:11 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:35:25 GMT]]></title><description><![CDATA[<pre><code class="language-cpp">if ((char_modus[0] == 'v')&amp;&amp;(char_modus[1] == 'e')&amp;&amp;(char_modus[2] == 'r')){verschluesseln = true;} 
else {verschluesseln = false;} 
if ((char_modus[0] == 'e')&amp;&amp;(char_modus[1] == 'n')&amp;&amp;(char_modus[2] == 't')){entschluesseln = true;} 
else {entschluesseln = false;} 
if ((char_modus[3] == 'l')&amp;&amp;(char_modus[4] == 'o')&amp;&amp;(char_modus[5] == 'g')){log = true;} 
else {log = false;} 
if (((verschluesseln == true)||(entschluesseln == true))&amp;&amp;((log == true)||(char_modus[3] == '\0'))){break;}
</code></pre>
<p>Bei sowas kannst du die Übersicht behalten? <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f62e.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--face_with_open_mouth"
      title=":open_mouth:"
      alt="😮"
    /></p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904553</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904553</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 30 May 2010 15:35:25 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:39:54 GMT]]></title><description><![CDATA[<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@nexus</a><br />
ja das geht noch, da wird ja nix kompliziertes gemacht</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/23889">@athar</a><br />
ja, MEISTENS liegt es am code, dennoch kann es auch am compiler liegen, denn der ist auch nur ein von menschen geschriebenes programm und genau deswegen übernehmen die programmierer des g++ auch keine verantwortung für mögliche fehler im compiler</p>
<p>ich hab den fehler andauernd wieder überlesen...<br />
jedenfalls danke für die schnelle hilfe!!!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904557</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904557</guid><dc:creator><![CDATA[sudo rm -rf]]></dc:creator><pubDate>Sun, 30 May 2010 15:39:54 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:41:22 GMT]]></title><description><![CDATA[<p>Aufgeräumt sieht das so aus:</p>
<pre><code class="language-cpp">const char* const cm=char_modus;
verschluesseln=cm[0]=='v' &amp;&amp; cm[1]=='e' &amp;&amp; cm[2]=='r';
entschluesseln=cm[0]=='e' &amp;&amp; cm[1]=='n' &amp;&amp; cm[2]=='t';
log=cm[3]=='l' &amp;&amp; cm[4]=='o' &amp;&amp; cm[5]=='g';
if ((verschluesseln || entschluesseln) &amp;&amp; (log || cm[3]=='\0'))break;
</code></pre>
<p>Kurzfassen lohnt sich, auch beim Programmieren.<br />
Die Leser werden's dir danken. Du selbst dir auch, wenn du deinen Code später nochmal lesen musst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904559</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904559</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 30 May 2010 15:41:22 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:45:24 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Aufgeräumt sieht das so aus:</p>
</blockquote>
<p>Das ist für mich genau das gleiche.<br />
Wir sind ja hier in einem C++ Forum und in C++ gibt es viele tolle Sachen, die sowas wirklich aufräumen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904561</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904561</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 30 May 2010 15:45:24 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:45:35 GMT]]></title><description><![CDATA[<p>sudo rm -rf schrieb:</p>
<blockquote>
<p>ja, MEISTENS liegt es am code, dennoch kann es auch am compiler liegen, denn der ist auch nur ein von menschen geschriebenes programm und genau deswegen übernehmen die programmierer des g++ auch keine verantwortung für mögliche fehler im compiler</p>
</blockquote>
<p>Ich denke du kannst noch einige Zeit davon ausgehen, dass auftretende Problem nie am Compiler sondern an deinem Code liegen. Riesige Projekte, die deutlich &quot;extremere&quot; features als simples if/else nutzen, haben keinerlei Probleme.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904562</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904562</guid><dc:creator><![CDATA[l&#x27;abra d&#x27;or]]></dc:creator><pubDate>Sun, 30 May 2010 15:45:35 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:53:44 GMT]]></title><description><![CDATA[<p>brotbernd schrieb:</p>
<blockquote>
<p>Das ist für mich genau das gleiche.</p>
</blockquote>
<p>Naja, beim Original bekomme ich persönlich Kopfschmerzen, bei der aufgeräumten Variante sehe ich auf den ersten Blick, dass hier nach Zeichenfolgen gesucht wird.</p>
<blockquote>
<p>Wir sind ja hier in einem C++ Forum und in C++ gibt es viele tolle Sachen, die sowas wirklich aufräumen.</p>
</blockquote>
<p>Sowas kann durchaus Sinn machen, wenn man Daten nach Zeichenfolgen absuchen muss. Mit string (falls du das meintest) wäre das um ein Vielfaches langsamer.<br />
Ist hier vermutlich aber nicht der Fall.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904567</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904567</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 30 May 2010 15:53:44 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 15:55:20 GMT]]></title><description><![CDATA[<p>sudo rm -rf schrieb:</p>
<blockquote>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/12954">@nexus</a></p>
<p>ja, MEISTENS liegt es am code, dennoch kann es auch am compiler liegen, denn der ist auch nur ein von menschen geschriebenes programm und genau deswegen übernehmen die programmierer des g++ auch keine verantwortung für mögliche fehler im compiler</p>
</blockquote>
<p>Keine Frage, der GCC hat Bugs. Aber der GCC gehört auch mit zu den bestgetesteten programmen die man so auf dem opensource markt kriegen kann. Immerhin wird der von mehreren Betriebssystemen als Grundlage verwendet.<br />
Die Bugs die der GCC hat sind eignetlich nur Kategorien: 1. floatingpoint Berechnungen beim Optimieren(das fällt auf bei Rechenfehlern nach der 15. Nachkommastelle) 2. nicht unterstützte Sprachfeatures. Und bei 2. sind das so spezielle Sachen, dass die meisten Programmierer damit nie in Berührung kommen.</p>
<p>Also, bevor du das nächste mal glaubst, dass dein Compiler verbuggt ist: check deinen Code 15 mal Zeile für Zeile mit dem Debugger. Der Compiler wurde von Profis geschrieben die ihn brauchten um ihre eigenen Programme zu compilieren. Die werden sicherlich merken, wenn da was einfaches kaputt ist...</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904568</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904568</guid><dc:creator><![CDATA[otze]]></dc:creator><pubDate>Sun, 30 May 2010 15:55:20 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 16:05:13 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>wäre das um ein Vielfaches langsamer.</p>
</blockquote>
<p>Wieso ist denn</p>
<pre><code class="language-cpp">char c[x];
...
c[0] == 'a' &amp;&amp; c[1] == 'b' &amp;&amp; c[2] == 'c'
</code></pre>
<p>um ein Vielfaches schneller als</p>
<pre><code class="language-cpp">string c;
...
c == &quot;abc&quot;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1904573</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904573</guid><dc:creator><![CDATA[brotbernd]]></dc:creator><pubDate>Sun, 30 May 2010 16:05:13 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 16:30:26 GMT]]></title><description><![CDATA[<p>Weil du im ursprünglichen Fall noch ein substr brauchst.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904580</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904580</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 30 May 2010 16:30:26 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 16:46:57 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Weil du im ursprünglichen Fall noch ein substr brauchst.</p>
</blockquote>
<p>Man sollte natürlich nicht unnötig kopieren.</p>
<p>Falls es es sich tatsächlich um ein geschwindigkeitskritisches Programm handelt (was hier sicherlich nicht der Fall ist), dürfte <code>std::string</code> etwas im Nachteil sein. Zum Beispiel wegen der dynamischen Allokation oder teilweise unnötigen Kopien.</p>
<p>Aber zum Glück programmieren wir in C++, wo Sauberkeit und Effizienz nicht zwingend Gegensätze sind.</p>
<pre><code class="language-cpp">verschluesseln=cm[0]=='v' &amp;&amp; cm[1]=='e' &amp;&amp; cm[2]=='r'
</code></pre>
<p>wird zu</p>
<pre><code class="language-cpp">verschluesseln = std::equal(cm, cm+3, &quot;ver&quot;);
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/1904584</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904584</guid><dc:creator><![CDATA[Nexus]]></dc:creator><pubDate>Sun, 30 May 2010 16:46:57 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 16:48:38 GMT]]></title><description><![CDATA[<p>Ahnte ich schon, dass die Standard-Library da was schönes bereithält.<br />
Falls das vergleichbaren Assemblercode produziert, ist es so natürlich besser.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904585</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904585</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 30 May 2010 16:48:38 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 17:58:51 GMT]]></title><description><![CDATA[<p>Athar schrieb:</p>
<blockquote>
<p>Ahnte ich schon, dass die Standard-Library da was schönes bereithält.<br />
Falls das vergleichbaren Assemblercode produziert, ist es so natürlich besser.</p>
</blockquote>
<p>programmierst Du in Assembler oder C++? Lesbarkeit von Code ist sehr wichtig. Ich verzichte sogar an der einen oder anderen Stelle auf den einen oder anderen Takt im Prozessor, um den Code lesbar zu machen. In der Regel wird er dadurch deutlich besser und fehlerfreier. Du hast selbst erlebt, wie Dein Spaggetticode zu unlesbaren Code führt, so dass Du selbst triviale Fehler überliest. Das hast Du mit diesem Beitrag doch demonstriert.</p>
<p>Und C++ ist deswegen so gut, da der lesbare Code in der Regel keinen Overhead produziert. (Textzeile aus einer bedeutenden <a href="http://www.youtube.com/watch?v=xF0-LGoXtaw" rel="nofollow">C++-Hymne</a>: &quot;I want abstraction and optimization both&quot;</p>
<p>Das Beispiels ist sehr gut dafür. Das std::equal produziert tatsächlich keinen Overhead. Allerdings sagst Du nicht nur dem Leser des Codes sondern auch der Standardbibliothek und dem Compliler präziser, was Du tun willst. Dadurch kann der Compiler möglicherweise spezializierte Assemblerbefehle verwenden, die er bei Deinem Spaghetticode nicht kann.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904628</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904628</guid><dc:creator><![CDATA[tntnet]]></dc:creator><pubDate>Sun, 30 May 2010 17:58:51 GMT</pubDate></item><item><title><![CDATA[Reply to hilfe!!! compiler vebuggt? on Sun, 30 May 2010 18:52:25 GMT]]></title><description><![CDATA[<p>tntnet schrieb:</p>
<blockquote>
<p>programmierst Du in Assembler oder C++? Lesbarkeit von Code ist sehr wichtig. Ich verzichte sogar an der einen oder anderen Stelle auf den einen oder anderen Takt im Prozessor, um den Code lesbar zu machen. In der Regel wird er dadurch deutlich besser und fehlerfreier. Du hast selbst erlebt, wie Dein Spaggetticode zu unlesbaren Code führt, so dass Du selbst triviale Fehler überliest. Das hast Du mit diesem Beitrag doch demonstriert.</p>
</blockquote>
<p>Ich bin nicht der OP <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="😕"
    /><br />
Dass Lesbarkeit wichtig ist, sagte ich schon selbst. Bis auf performancekritische Codebereiche auch wichtiger als Effizienz.</p>
<p>tntnet schrieb:</p>
<blockquote>
<p>Und C++ ist deswegen so gut, da der lesbare Code in der Regel keinen Overhead produziert. (Textzeile aus einer bedeutenden <a href="http://www.youtube.com/watch?v=xF0-LGoXtaw" rel="nofollow">C++-Hymne</a>: &quot;I want abstraction and optimization both&quot;</p>
</blockquote>
<p>In der Theorie schon, aber das erfordert, dass die Compiler auch alle Optimierungsmöglichkeiten ausnutzen. Zumindest g++ produziert hier auch bei -O3 nicht immer optimalen Code, gerade wenn's ums Loop-Unrolling geht. In &quot;normalem&quot; Code ist das völlig egal, aber wenn es um Schnelligkeit geht, sollte man selbst überprüfen, ob der Compiler das ideal löst.</p>
<pre><code class="language-cpp">int test()
{
  const char cm[4]=&quot;ver&quot;; //das reicht schon, um g++ aus dem Konzept zu bringen
  return std::equal(cm, cm+3, &quot;ver&quot;); //kompiliert in eine schön umfangreiche Schleife
  //return cm[0]=='v' &amp;&amp; cm[1]=='e' &amp;&amp; cm[2]=='r'; //kompiliert zu mov eax,1
}
</code></pre>
<p>Naja, egal. Im Grunde wollte ich nur sagen, dass man möglichst lesbaren Code schreiben sollte.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1904646</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1904646</guid><dc:creator><![CDATA[Athar]]></dc:creator><pubDate>Sun, 30 May 2010 18:52:25 GMT</pubDate></item></channel></rss>