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

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren