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
Wie solls FINAL in C geben, wenns keine Überladung in C gibt?! Für so Spielereien gibts den Präprozessor und assert().
> 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.
Aber um die Frage zu beantworten: Nein, "final" taucht im C-Standard nicht auf.
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!
> 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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.