www.mikrocontroller.net

Forum: Compiler & IDEs Array einer Funktion direkt übergeben


Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Ralf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Antwort!

Autor: DerDan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

wenn du keine Null in deinen Daten hast, dann kannst du auch folgendes 
nutzen:

void Funktion (char * Daten);


und aufrufen mit:
Funktion ("\xFF\x22\x33");


Wenn du doch eine Null in den Daten hast musst du die Länge mit 
übergeben (Falls nicht konstant):
void FunktionLen (char * Daten, int len);


und aufrufen mit:
FunktionLen ("\xFF\x22\x33\x00", 4);


mfg

DerDan

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Better late than never:

In C99 geht  auch
  Funktion((char []){0xFF,0x22,0x33});

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.