www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik final - wie in JAVA?


Autor: Wissenwill (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich kenn das Stichwort "final" aus Java. Gibts so was i C auch? Ich 
benutze das gerne um "debugging- ausgabe" während der Entwicklung 
ein/auszuschalten. Ich weiß dass das final nicht unbedingt nötig ist.
Danke

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie solls FINAL in C geben, wenns keine Überladung in C gibt?!

Für so Spielereien gibts den Präprozessor und assert().

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich kenn das Stichwort "final" aus Java. Gibts so was i C auch?

In welchem Zusammenhang? Konstantendefinition per "static final"? 
Nichtüberschreibbare Methode? Lokale Konstante? Dieses Schlüsselwort hat 
je nach Kontext völlig andere Bedeutung.

Autor: Sven P. (haku) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aber um die Frage zu beantworten: Nein, "final" taucht im C-Standard 
nicht auf.

Autor: Wissenwill (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich meinte nicht überschreibbare Konstante. Wenns das nicht gibt - auch 
ok.
Wenn noch jemand Zeit und Lust zum Erklären hat: Was ist Überladung und 
assert()?

Danke!

Autor: Morin (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ich meinte nicht überschreibbare Konstante. Wenns das nicht gibt - auch ok.

Klar gibt es das in C. Sogar auf zwei Arten (ich erkläre es jetzt für 
den Typ "int"):
const int x = 23;

Legt eine "Variable" namens x an, die den Wert 23 enthält und nicht 
(oder nicht ohne implementierungs-spezifische Tricks) überschrieben 
werden kann. Das entspricht am ehesten "final".

Daneben gibt es eine zweite Möglichkeit, da eine const-Variable in 
gewisser Hinsicht immer noch als Variable behandelt wird - z.B. kann man 
in Standard-C den Variablenwert nicht für Arraygrößen verwenden, da es 
ja eine Variable ist und für Arraygrößen nur Konstante Ausdrücke 
zugelassen werden. Ganz einsichtig ist das nicht, aber so ist es eben. 
Deshalb gibt es die Möglichkeit, über den Präprozessor ein Macro zu 
definieren:
#define x 23

Diese Variante ist wenig mehr als eine Textersetzung x->23 und 
funktioniert deshalb auch für Arraygrößen. ("wenig mehr" bedeutet hier, 
dass der Buchstabe x z.B. nur ersetzt wird, wenn er nicht Teil eines 
längeren Bezeichners ist, so wie in "extremwert"). Dann gibt es aber 
keine Variable mehr von der man z.B. die Adresse berechnen könnte.

Autor: Daniel F. (df311)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
debug.h einbinden, C99-flag benutzen, DEBUG benutzen, fertig

zum debuggen einfach mit "-D DB -std=c99" übersetzen und debug-ausgaben
mit DEBUG(...) realisieren. DEBUG kann alles was printf auch kann.

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.