<?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[Problem bei der Klammersetztung]]></title><description><![CDATA[<p>Guten Tag liebe Forumsmitglieder,<br />
zurzeit schreibe ich ein kleines Programm für einen Mikrocontroller und bin gerade dabei einen kleinen Ringpuffer zu Programmieren.</p>
<p>Funktionieren tut das Programm bisher so wie ich es will, allerdings haut der Compiler mir ne Warnings raus, die ich gerne beheben würde. Nur Leider weiß ich absolut nicht wo er da Klammern von mir will. Auch google bringt mich hier leider nicht wirklich weiter.</p>
<p>Meldung (hier Zeile 18):</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> suggest parentheses around '-' in operand of '&amp;'</p>
</blockquote>
<p>Es wäre schön, wenn mich jemand auf meine Fehler aufmerksam machen würde.<br />
vielen Dank,</p>
<p>Hier die Code-Auszüge</p>
<pre><code>//-------------------------------	Ringpuffer	----------------------------------
#define Buffer_Fehler	0
#define Buffer_Erfolg	1

#define Buffer_size		32		//2^n
#define Buffer_mask		Buffer_size-1	//Maske gefüllt mit &quot;11111...&quot;

struct Buffer_tx0	{
	uint8_t	data[Buffer_size];
	uint8_t read;		//Zeiger auf das Feld, das gelesen wird
	uint8_t write;		//Zeiger auf das Feld, das als nächstes beschrieben wird
	}Buffer_tx0={{},0,0};

//Schreibt ein Byte in den Transmit Ringpuffer
uint8_t Buffer_tx0_in (uint8_t Byte)		//Return 1 bei erfolg und 0 bei Fehler --&gt; Buffer Voll
{
	uint8_t next = ((Buffer_tx0.write+1)&amp;Buffer_mask); // &lt;---- auf diese Zeile bezieht sich die Fehlermeldung
	if(Buffer_tx0.read==next)
	{
		return Buffer_Fehler;
	}

	Buffer_tx0.data[Buffer_tx0.write]=Byte;
	Buffer_tx0.write=next;

	return Buffer_Erfolg;
	}
</code></pre>
<p>vielen Dank,<br />
und entschuldigt, wenn ich einen neuen Threat aufgemacht habe, aber davon lebt doch ein Forum!</p>
<p>lg,<br />
Saturi</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/332849/problem-bei-der-klammersetztung</link><generator>RSS for Node</generator><lastBuildDate>Mon, 27 Apr 2026 12:03:20 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/332849.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 25 May 2015 21:55:17 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem bei der Klammersetztung on Mon, 25 May 2015 21:55:17 GMT]]></title><description><![CDATA[<p>Guten Tag liebe Forumsmitglieder,<br />
zurzeit schreibe ich ein kleines Programm für einen Mikrocontroller und bin gerade dabei einen kleinen Ringpuffer zu Programmieren.</p>
<p>Funktionieren tut das Programm bisher so wie ich es will, allerdings haut der Compiler mir ne Warnings raus, die ich gerne beheben würde. Nur Leider weiß ich absolut nicht wo er da Klammern von mir will. Auch google bringt mich hier leider nicht wirklich weiter.</p>
<p>Meldung (hier Zeile 18):</p>
<blockquote>
<p><img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/26a0.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--warning"
      title=":warning:"
      alt="⚠"
    /> suggest parentheses around '-' in operand of '&amp;'</p>
</blockquote>
<p>Es wäre schön, wenn mich jemand auf meine Fehler aufmerksam machen würde.<br />
vielen Dank,</p>
<p>Hier die Code-Auszüge</p>
<pre><code>//-------------------------------	Ringpuffer	----------------------------------
#define Buffer_Fehler	0
#define Buffer_Erfolg	1

#define Buffer_size		32		//2^n
#define Buffer_mask		Buffer_size-1	//Maske gefüllt mit &quot;11111...&quot;

struct Buffer_tx0	{
	uint8_t	data[Buffer_size];
	uint8_t read;		//Zeiger auf das Feld, das gelesen wird
	uint8_t write;		//Zeiger auf das Feld, das als nächstes beschrieben wird
	}Buffer_tx0={{},0,0};

//Schreibt ein Byte in den Transmit Ringpuffer
uint8_t Buffer_tx0_in (uint8_t Byte)		//Return 1 bei erfolg und 0 bei Fehler --&gt; Buffer Voll
{
	uint8_t next = ((Buffer_tx0.write+1)&amp;Buffer_mask); // &lt;---- auf diese Zeile bezieht sich die Fehlermeldung
	if(Buffer_tx0.read==next)
	{
		return Buffer_Fehler;
	}

	Buffer_tx0.data[Buffer_tx0.write]=Byte;
	Buffer_tx0.write=next;

	return Buffer_Erfolg;
	}
</code></pre>
<p>vielen Dank,<br />
und entschuldigt, wenn ich einen neuen Threat aufgemacht habe, aber davon lebt doch ein Forum!</p>
<p>lg,<br />
Saturi</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454767</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454767</guid><dc:creator><![CDATA[Saturi]]></dc:creator><pubDate>Mon, 25 May 2015 21:55:17 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei der Klammersetztung on Mon, 25 May 2015 22:17:07 GMT]]></title><description><![CDATA[<p>.<br />
EDIT: Zu peinlich =&gt; musste weg <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="🙂"
    /><br />
Ich sollte genauer gucken bevor ich antworten schreibe.</p>
<p>Was stimmt ist dass das Problem durch die (nicht nötige und unpassende) Verwendung von Makros entstanden ist.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454768</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454768</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Mon, 25 May 2015 22:17:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei der Klammersetztung on Mon, 25 May 2015 22:04:39 GMT]]></title><description><![CDATA[<p>Ist doch offensichtlich, Buffer_mask ist Buffer_size-1. Nach der Ersetzung steht dran</p>
<p>x &amp; a - 1.</p>
<p>Ist da jetzt (x &amp; a) - 1 gemeint, oder x &amp; (a - 1). Deswegen schlägt der Compiler vor, dass du Klammern gleich klammern hinschreibst, so wie du dir das eigentlich gedacht hattest.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454769</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454769</guid><dc:creator><![CDATA[Mechanics]]></dc:creator><pubDate>Mon, 25 May 2015 22:04:39 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei der Klammersetztung on Mon, 25 May 2015 22:18:59 GMT]]></title><description><![CDATA[<p>Hallo!<br />
Danke für die Lösung<br />
Ist ja unglaublich, wie schnell das hier geht,</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/28374">@Mechanics</a><br />
Ja unglaublich wie offensichtlich es ist... und noch unglaublicher das ich in meinem Programmierwahn die definition von Buffer_Mask aus meinem kopf ausgeblendet habe und mir nur eine Binär Zahl voller 1en vorgestellt habe...</p>
<p>Vielen Dank!</p>
<p><a class="plugin-mentions-user plugin-mentions-a" href="https://www.c-plusplus.net/forum/uid/13960">@hustbaer</a><br />
Wo beziehe ich mich in meinem Programm denn auf eine Adresse?<br />
und was meinst du mit sinnfreiem Makro?<br />
Wäre nett wenn du mich kurz aufklären würdest, weil ich bereit bin meinen<br />
Programmierstil(wenn man Ihn so nennen darf) zu verbessern.</p>
<p>Danke euch beiden für die schnelle Hilfe!</p>
]]></description><link>https://www.c-plusplus.net/forum/post/2454770</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454770</guid><dc:creator><![CDATA[Saturi]]></dc:creator><pubDate>Mon, 25 May 2015 22:18:59 GMT</pubDate></item><item><title><![CDATA[Reply to Problem bei der Klammersetztung on Tue, 26 May 2015 01:41:55 GMT]]></title><description><![CDATA[<p>Saturi schrieb:</p>
<blockquote>
<p>Wo beziehe ich mich in meinem Programm denn auf eine Adresse?</p>
</blockquote>
<p>Nirgends. Mein Fehler. Nicht genau genug geguckt.</p>
<p>Saturi schrieb:</p>
<blockquote>
<p>und was meinst du mit sinnfreiem Makro?<br />
Wäre nett wenn du mich kurz aufklären würdest, weil ich bereit bin meinen<br />
Programmierstil(wenn man Ihn so nennen darf) zu verbessern.</p>
</blockquote>
<p>Na die ganzen Makros die du verwendest.<br />
Die <code>#define</code> Teile.<br />
Besser wäre schonmal</p>
<pre><code class="language-cpp">#define Buffer_mask     (Buffer_size-1)
</code></pre>
<p>zu schreiben.<br />
Und gleich noch viel besser wäre es ganz normale Konstanten zu verwenden.</p>
<pre><code class="language-cpp">static uint32_t const Buffer_mask = Buffer_size - 1;
</code></pre>
]]></description><link>https://www.c-plusplus.net/forum/post/2454771</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/2454771</guid><dc:creator><![CDATA[hustbaer]]></dc:creator><pubDate>Tue, 26 May 2015 01:41:55 GMT</pubDate></item></channel></rss>