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


von Wissenwill (Gast)


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

von Sven P. (Gast)


Lesenswert?

Wie solls FINAL in C geben, wenns keine Überladung in C gibt?!

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

von Morin (Gast)


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.

von Sven P. (Gast)


Lesenswert?

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

von Wissenwill (Gast)


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!

von Morin (Gast)


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"):
1
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:
1
#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.

von Daniel F. (df311)


Angehängte Dateien:

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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.