Forum: Compiler & IDEs Array einer Funktion direkt übergeben


von Ralf (Gast)


Lesenswert?

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

von Stefan B. (stefan) Benutzerseite


Lesenswert?

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.

von Ralf (Gast)


Lesenswert?

Danke für die Antwort!

von DerDan (Gast)


Lesenswert?

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

von yalu (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.