Forum: Compiler & IDEs enum als Funktionsparameter


von janvi (Gast)


Lesenswert?

Mit enum definiere ich 3 mögliche Getriebestellungen
enum Getriebe {STOP, VOR, ZURUECK};
Sodann lege ich eine Variable vom Typ Getriebe an
enum Getriebe fahra = STOP;
woebei diese gleich auf den Wert 0 initialisiert wird.
Jetzt möchte ich einen Wert für die Variable fahra als
Parameter uebergeben

void Kriechgang (int_16t arg1, Getriebe arg2)
{V_soll = arg1;
 fahra = arg2;
}

Was mit arg1 vom Typ int_16t funzt meckert GCC bei
arg2 vom Typ Getriebe an:

Error expected declaration spezifiers or `...` before Getriebe

von 234897897676878844 (Gast)


Lesenswert?

1
typedef enum{
2
  STOP = 0, 
3
  VOR, 
4
  ZURUECK
5
}getriebe_t;

von janvi (Gast)


Lesenswert?

funzt, danke ...
der _t gehört wohl zum guten Stil für selbstdefinierte Typen ?

von Sebastian V. (sebi_s)


Lesenswert?

Die Fehlermeldung ist eigentlich klar. Der Compiler meckert über das 
fehlende enum vor dem Getriebe Funktionsparameter. Entweder schreibst 
du:
1
void Kriechgang (int_16t arg1, enum Getriebe arg2)
Oder du benutzt, wie in C meist üblich, ein typdef um dir das schreiben 
von enum zu sparen (siehe Beitrag von 234897897676878844).

Ob man Typen mit _t am Ende schreibt ist wohl Geschmackssache. Zumindest 
bei allgemeinen Wörtern finde ich das _t nicht verkehrt, wie es etwa 
size_t schon vormacht. Weil ich size schon noch gerne als Variablenname 
irgendwo verwenden möchte.

von 234897897676878844 (Gast)


Lesenswert?

Sebastian V. schrieb:
> Ob man Typen mit _t am Ende schreibt ist wohl Geschmackssache. Zumindest
> bei allgemeinen Wörtern finde ich das _t nicht verkehrt, wie es etwa
> size_t schon vormacht. Weil ich size schon noch gerne als Variablenname
> irgendwo verwenden möchte.

ich hab mir das mal angewöhnt bei eigens definierten datentypen
sei es struct , union , enum ein _t dahinterzuschreiben.

die IDE macht das dann auch grün im sinne von datentyp ..

wenn man das als einzelnen namen stehen lässt kann das 1-2 jahre später 
mitten im text für verwirrung sorgen
ein uint8_t erkennt man ja auch immer wieder

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.