Prototyp / Funktionsdefinition ohne standard qualifier

#3408877
Lesenswert?
• ▲
▼
Paul schrieb:

> ErrorStatus RTC_DeInit(void);
>
> ErrorStatus ist ja kein qualifier

wieso Qualifier? Wo soll da ein Qualifier im Spiel sein?
ErrorStatus ist ein Datentyp wie jeder andere, zb int, oder double. 
Diese Funktion liefert dann eben keinen int oder double sondern einen 
ErrorStatus.

Und das wiederrum ist ein enum, wie du ja selbst angegeben hast.

Ev. doch mal einen Blick in ein C-Buch riskieren?
Moderator Persönliche Seite #3422734
Lesenswert?
• ▲
▼
Paul schrieb:
> typedef enum {ERROR = 0, SUCCESS = !ERROR} ErrorStatus;

Die Definition für "SUCCESS" ist Nonsense.

Schreib das besser so:
1
typedef enum {
2
  ERROR, SUCCESS
3
} ErrorStatus;

Die beiden sich ergebenden Werte (0 für "ERROR", 1 für "SUCCESS") sind
wohl definiert und entsprechen komplett dem kryptischen
Ausrufezeichenhumbug da oben.

(Ich weiß, kommt sicher nicht von dir, aber da wollte jemand wohl ganz
besonders "flexibel" sein und hat eine Definition verbrochen, die
letztlich nur besonders kompliziert ist, ohne irgendeinen wirklichen
Gewinn an "Flexibilität" zu haben.)
#3422823
Lesenswert?
• ▲
▼
Jörg Wunsch schrieb:
> Die Definition für "SUCCESS" ist Nonsense.

Nicht unbedingt.
Mancher verwendet eben für SUCCESS TRUE und mancher FALSE.
Beides hat seine Berechtigung.
TRUE ist logischer, FALSE erlaubt den Fehler genauer zu spezifizieren.

Wenn ich LEDs gegen VCC habe, schreibe ich auch:
1
#define LED_ON  0
2
#define LED_OFF !LED_ON
Und wenn sich die Schaltung ändert, muß ich nur ein Define ändern.
Z.B. ich teste auf dem STK500, im Gerät sind die LEDs aber gegen GND.
Moderator Persönliche Seite #3422828
Lesenswert?
• ▲
▼
Peter Dannegger schrieb:
> Und wenn sich die Schaltung ändert, muß ich nur ein Define ändern.

Naja, das ist ein lahmes Argument, da die zwei Zeilen ja ohnehin
hintereinander sind. ;-)

In aller Regel steckt da eher die Unsicherheit dahinter: "ich weiß
doch gar nicht, welchen Wert die logische Negation von 0 bei einem
anderen Compiler ergibt", obwohl eben dieser Wert ganz klipp und klar
als 1 definiert ist.

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.