@damaltor
Klar, ist so gemeint. Allerdings wirft dich die Frage nach der Hölle nun etwas zurückSiehe Antwort von m.a.r.v.i.n
@stochri
Da ist noch nichts eingebaut.
Mit dem Übernehmen in die LIB hatte ich nur im Sinn den Sender auch wieder auszuschalten. In meinem Beitrag hatte ich (wahrscheinlich durch blah, blah, blah verstümmelt) eigendlich für die Daseinsberechtigung aller 3 Funktions-Varianten zum senden plädiert.
Aber m.a.r.v.i.n hat wohl den Nagel auf den Kopf getroffen, und eine perfekte Lösung gefunden.
Kleine Änderung beim define:
#define SerPrint(data) SerWrite(unsigned char *data, 0);
Oder muss das "data" bei einem define auch mit Typeangabe, *-chen oder sonstigem sein?
Auch noch eine weitere Frage zu dem Code, bei der ich absolut unsicher bin was da eigendlich passieren wird.
- Ich mache ne Char-Array-Variable á la "char infos [10];"
- Daten da rein mit "strcpy (infos, "Wichtig");"
- Nun der Aufruf über SerPrint (infos) an SerWrite(infos, 0)
- In SerWrite wird mit "*data++" das zu sendende Zeichen ausgewählt UND der Zeiger auf den übergeben Datenbereich mit ++ erhöht.
Meine Frage ist:
Wenn die Funktion beendet wird, ist dann der Zeiger/Adresse in infos immer noch an der Stelle im Speicher an der ich 10 Byte speichern darf, oder wurde dieser Zeiger/Adresse nun durch das ++ auch beim Aufrufer geändert?
Wenn das der Fall wäre, dann dürfte ich als Aufrufer ja nun nicht mehr davon ausgehen, dass mir der Speicherbereich ab infos mit 10 Byte gehört.
Im Original-Code ist das Adressieren der Daten in infos mit einer eigenen Variablen gelöst: "data[i++]"
Lesezeichen