Funktionsaufruf ausklammer erzeugt Fehler (C8051, silabs)

Gast #5186881
Lesenswert?
• ▲
▼
Hallo,

ich möchte hier gar nicht meinen ganzen Sourcecode zeigen, sondern nur 
eine Fehlerbeschreibung geben, welche ich derzeit nicht nachvollziehen 
kann.

Ich benutze einen C8051F580 von Silicon Labs und deren IDE mit Keil 
Compiler.

Mein Sourcecode kann ohne Fehler übersetzt werden. Klammere ich nun 
einen der zentralen Funktionsaufrufe in der while(1)-Schleife mit "//" 
aus und versuche mein Programm erneut zu übersetzen, bekomme ich 21 
Fehler, die vorher eben nicht da waren.

Nach meinem Verständnis kann es durch die Wegnahme von Sourcecode doch 
nicht zu Fehlern kommen, ich entferne doch nur Quellcode? Die Fehler 
sind unter anderem:

- ADDRESS SPACE OVERFLOW
- REFERENCE MADE TO ERRONEOUS EXTERNAL
- PUBLIC REFERS TO IGNORED SEGMENT

Woran kann das liegen?
Gast #5186912
Lesenswert?
• ▲
▼
Otto schrieb:
> Mein Sourcecode kann ohne Fehler übersetzt werden. Klammere ich nun
> einen der zentralen Funktionsaufrufe in der while(1)-Schleife mit "//"
> aus und versuche mein Programm erneut zu übersetzen, bekomme ich 21
> Fehler, die vorher eben nicht da waren.

Eine Frage die nach 10 Sekunden Google geklärt wäre.

Stichwort: Version des eingesetzten C Standards.
#5187019
Lesenswert?
• ▲
▼
@Otto (Gast)

>Mein Sourcecode kann ohne Fehler übersetzt werden.

Super.

>Klammere ich nun
>einen der zentralen Funktionsaufrufe in der while(1)-Schleife mit "//"
>aus und versuche mein Programm erneut zu übersetzen, bekomme ich 21
>Fehler, die vorher eben nicht da waren.

Dann hast du möglicherweise eine Klammer zuviel oder zuwenig 
auskommentiert. Das kann vor allem dann passieren, wenn man if() 
Statements ohne Klammern nutzt und die unsichtbare, impliziert 
Strukturebene übersieht. Darum sollte man bei if(), for(), while() IMMER 
mit einer Klammer arbeiten, auch wenn dort nur eine einzige Anweisung 
drinsteht. Das gleiche gilt für Makros, welche Anweisungen enthalten.
#5187035
Lesenswert?
• ▲
▼
Otto schrieb:
> Nach meinem Verständnis kann es durch die Wegnahme von Sourcecode doch
> nicht zu Fehlern kommen, ich entferne doch nur Quellcode?

Keil auf 8051 macht Laufzeitanalyse, u.a. für Variablen Overlays.

Wenn da jetzt die Funktionsaufrufe fehlen, belegen lokale Variablen in 
den nicht aufgerufenen Teilen plötzlich eigenen Speicherplatz -> data 
Segment läuft voll.
#5187211
Lesenswert?
• ▲
▼
Fehlermeldungen dienen ja nicht der Unterhaltung, auch wenn es viele so 
glauben mögen, sie dienen der Information.
Erstmal ist wichtig, welche Instanz den Fehler meldet, ist es der 
Compiler oder der Linker.
Und dann ist eigentlich nur die erste Fehlermeldung wichtig, alles 
andere sind oft Folgefehler.
Insbesondere der Filename und die Zeilennummer bezeichen fast immer die 
Nähe des Bereichs, wo man den Fehler gemacht hat. Leider lassen 
Hilfesuchende diese oft weg und erwarten vom Helfer, daß er sich durch 
den gesamten Code wühlen soll.
Und dann muß man sich nur den exakten Wortlaut in Ruhe durch den Kopf 
gehen lassen.

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.