www.mikrocontroller.net

Forum: Compiler & IDEs Problem mit if ()


Autor: Denis Tynaschev (denist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Freitag... Wahrscheinlich bin ich schon müde, aber...

Ich habe ein Problem mit if().
if (result != 0)
{
 // bearbeiten
}

Beim Debugging AVR Studio zeigt, dass result gleich Null ist, aber das 
Programm geht trotzdem in Bearbeitungsroutine.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn er anzeigt das es Null ist, dann ist es eventuell ein object mit 
überladenen != Operator. Dann kann auch NULL != 0 sein.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> Debugging AVR Studio
> überladenen != Operator
C++ ?

> dass result gleich Null ist
Welchen Typ hat result, ist das ein float?

Autor: Denis Tynaschev (denist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Lothar Miller wrote:
>> dass result gleich Null ist
> Welchen Typ hat result, ist das ein float?
unsigned char

Autor: Nicolas S. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist result == 0 oder result == '0'?

Autor: Denis Tynaschev (denist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nicolas S. wrote:
> Ist result == 0 oder result == '0'?

Exakter es ist uint8:
typedef unsigned char        uint8;

Ist 0. Das kann ich auch im RAM sehen.

Autor: ... ... (docean) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was passiert bei
if(result)
{
  //mach was
}

?

Autor: Denis Tynaschev (denist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
... ... wrote:
> Was passiert bei
>
>
> if(result)
> {
>   //mach was
> }
> 
>
> ?

Das gleiche.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was Du da schreibst, ist unter den Bedingungen, die anderen Antworter 
schon abgefragt haben, einfach unmöglich.
Am besten poste mal ein minimales Programm das kompilierbar ist und 
genau dieses Verhalten zeigt.

Autor: Ahem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich tippe auf volatile.

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schmeisse mal Deinen Code-Abschnitt per Copy+Pase hier ins Forum, nicht 
mit abtippen! Hast Du vieleicht einen Semiklon hinter der if()-Abfrage, 
z.B:
if (result != 0);
{
 // bearbeiten
}

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder ist result ein pointer?
void MyFunc(u08 *result)
{
  if (result != 0)  // Richtig wäre if (*result != 0)
  {
   // bearbeiten
  }
}

Autor: Denis Tynaschev (denist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke allen für die Hilfe, leider kann ich heute nicht weitermachen. Am 
Monntag werde ich dieses Programm am PC laufen lassen, am virtuellen 
Umgebung, um zu prüfen, ob es auch so funktioniert. Dann werde ich mehr 
wissen, also bis Montag und schönes Wochenende.

Autor: Philipp Burch (philipp_burch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Disassembly könntest du auch mal ansehn/posten. Vielleicht verwendet 
der Simulator/Prozessor auch ein veraltetes Kompilat.

Autor: Di Pi (drpepper) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
vielleicht hilfts, wenn du zusätzlich zum if-teil auch noch jede andere 
verwendung von "result" postst inklusive deklaration und 
initialisierung...

Autor: Denis Tynaschev (denist)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!
Ich habe gute Nachrichten: heute nach dem Neustart, "Clean" und "Rebuild 
All" geht es weiter, obwohl das habe ich auch Freitag probiert.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.