Hallo zusammen,
ich möchte ein Strukt mit einem Wide Character String initialisieren.
Dazu muss der Präprozessor den Ausdruck
L"Hallo" in {'H','a','l','l','o'} umwandeln.
Hat jemand ne Idee, wie ich ihm das beibringen kann? Mir fällt partout
nix ein.
Vielen Dank schonmal
Andreas
Irgendwie verstehe ich nicht ganz, wozu das gut sein soll. Wenn deine
Struktur keine wide character strings enthält, warum willst du sie dann
mit welchen initialisieren?
Andreas schrieb:> Dazu muss der Präprozessor den Ausdruck>> L"Hallo" in {'H','a','l','l','o'} umwandeln.
kann sein das ich auf den Schlauch stehe aber
wchar_t bla[] ={ L"Hallo" } ;
geht nicht?
mein gcc unter linux frist das.
Andreas schrieb:> Hallo Imon,>> wenn ich eine Variable vorinitialisieren möchte, geht das schon. Ich> will aber einen Strukt vorinitialisieren. In entwa so:>>
Hallo Imon,
Du hast zwar prinzipiell Recht. Leider hilft mir das aber für meine
Anwendung nicht weiter, da ich die Struktur anschließend serialisieren
und an eine andere Anwendung verschicken will. Bei der würde nun aber
nicht
01 00 00 00 00 48 00 61 00 6C 00 6C 00 6F 02 00 00 00
1 | 'H' 'a' 'l' 'l' 'o' | 2
ankommen, sondern
01 00 00 00 XX XX XX XX 02 00 00 00
1 | Zeiger auf | 2
die Stelle
wo L"Hallo"
im Code
steht
Danke trotzdem und
Viele Grüße
Andreas
Andreas schrieb:> Du hast zwar prinzipiell Recht. Leider hilft mir das aber für meine> Anwendung nicht weiter, da ich die Struktur anschließend serialisieren> und an eine andere Anwendung verschicken will.
das kommt drauf an wie du das Serialisieren erledigen willst, wenn du
dafür eine Funktion schreibst kann diese das Berücksichtigen und an der
Stelle des wchar_t String denn Inhalt der Adresse statt des
Adresspointer hinein schreiben.
Ansonsten musst du dir doch damit leben das ganze in form von {'H', 'A'
,'L,'L','O' } zu initialiesieren, oder aber erst zur laufzeit mit einer
art
memcpy. Alternativ kannst du wie auch schon vorgeschlagen ein Code
generator schreiben. bzw ein Parser um das Komfortabel zum machen.
Fakt ist du hast ein Problem das sich alleine mit denn C Standard nicht
lösen lässt, also musst du ein Kompromiss finden, die möglichkeiten
haben wir dir gezeigt nun liegt es an dir. wäre intressant zu erfahren
für was du dich entscheiden hast.
Imon schrieb:> wäre intressant zu erfahren> für was du dich entscheiden hast.
Hallo nochmal,
ich habe mich entschieden die Schreibweise {'H','a','l,'l','o'} zu
verwenden. Es gefällt mir zwar nicht besonders aber andere Alternativen
(Codegererator oder Parser schreiben) kommen nicht in Frage, da das mit
Kanonen auf Spatzen geschossen wäre.
Die Nachricht erst beim Serialisieren zusammenbauen, möchte ich auch
nicht, da das Ganze zur Laufzeit so effizient wie möglich sein soll (das
Zielsystem ist ein Mikrocontroller) und die fertigen Nachrichten (es
gibt sehr viele davon) im Flash stehen sollen, so dass sie nur noch
gelesen und rausgeschickt werden müssen.
Danke nochmal an alle
Andreas