Hallo, ich habe eine Funktion: void Funktion(char data[]) { ... } Diese will ich nun mit direkten Werten aufrufen, ohne weitere Variable. Das habe ich wie folgt versucht: ... Funktion({0xFF,0x22,0x33}); und Funktion([0xFF,0x22,0x33}]); Führt aber beides nicht zum Erfolg. Kann mir jemand sagen wie ich dies lösen kann? Danke im voraus Ralf
In C so gar nicht. Die IMHO einfachste Variante wäre, das Array vorher als Variable anzulegen und dann einen Pointer auf das erste Element zu übergeben. Das Anlegen kann je nach µC lokal auch aus dem ROM heraus gemacht werden, wenn der SRAM-Platz kostbar ist. Alternativ könnte man auch was mit Funktionen mit variabler Argumentzahl was fuddeln und sich innerhalb der Funktion das Array mit den Argumenten füllen bzw. die Argumente direkt bearbeiten.
Hallo, wenn du keine Null in deinen Daten hast, dann kannst du auch folgendes nutzen:
1 | void Funktion (char * Daten); |
und aufrufen mit:
1 | Funktion ("\xFF\x22\x33"); |
Wenn du doch eine Null in den Daten hast musst du die Länge mit übergeben (Falls nicht konstant):
1 | void FunktionLen (char * Daten, int len); |
und aufrufen mit:
1 | FunktionLen ("\xFF\x22\x33\x00", 4); |
mfg DerDan
Better late than never: In C99 geht auch
1 | Funktion((char []){0xFF,0x22,0x33}); |
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.