Olaf schrieb:
> uint8_t cmpEnum( char*c){
>
> for (uint8_t i = 0 ; i >= sizeof(c)/sizeof(char); i++){ //
> "sizeof(c)/sizeof(char)" get elements of char* Array
> if (strcmp(c , getEnumMODEString[i]) !=0 ) return i ;
> }
> }
Das sieht irgendwie ziemlich kaputt aus. c ist hier ein char pointer,
sizeof(c) sollte also auf 32bit Systemen immer 4, auf 64bit Systemen
immer 8 liefern. Was genau soll in der Schleife passieren? Ein
Durchlaufen aller Möglichkeiten? Die sind ja nur in getEnumMODEString
gelistet. "sizeof(getEnumMODEString)/sizeof(char*)" würde schon viel
mehr Sinn machen, aber auch dann muss < für die Schleife verwendet
werden. Und strcmp muss auf 0 Vergleichen. 0 heißt "0 Unterschied".
Olaf schrieb:
> case LOG:
> Mode = LOG;
Diese ganzen Konstrukte kannst du dir sparen, gib einfach außerhalb der
Schleife der cmpEnum Funktion als Return Wert "NO_OPTION" zurück. Dann
kannst du nur für die Fälle wo du reagieren willst switch cases machen
(in dem Beispiel is das nur case NO_OPTION:) und für den Rest (default:)
immer MODE = <was immer cmpEnum returnt>