Moin, ich glaube es gibt keinen besseren Trick, größere Byte-Array-Records mit numerischen (Hex-)Konstanten aus dem C-Code zu initialisieren, als diese aufgeblähte unübersichtliche Standard-Schreibweise oder? {0x0C,{0x01,0x72,0xAC,0x00},{0x88,0x88,0x48,0x88,0x48,0x08}} Gewünscht wäre diese Richtung: 0C:0172AC00:888848884808
batman schrieb: > ich glaube es gibt keinen besseren Trick, größere Byte-Array-Records mit > numerischen (Hex-)Konstanten aus dem C-Code zu initialisieren, als diese > aufgeblähte unübersichtliche Standard-Schreibweise oder? Zum einen muß man natürlich aufpassen, daß die Endianess des Hostsystems da keinen Einfluß bekommt. Zum anderen geht es aber ja auch nicht um numerische Dinge, sondern um Textsubsitution. Könnte man nicht den Präprozessor dafür einspannen, aus der Komfortnotation mit ein paar Makros die Standard-Initialisierung zu machen? Alternativ könnte man natürlich auch in die Buildchain ein Tool einbauen, was derlei Strings aus einem Textfile oder so liest und daraus dann ein C-File mit den Variablen in C-Notation autogeneriert. Das müßte man dann bloß noch im gewünschten Quelltextfile includieren. Sowas in der Art habe ich im Einsatz für den Include von Binärdateien, die vorher erst parametriert auf dem Host erzeugt werden.
Ja, automatisiert in eine (aufgeblähte) Include-Datei übersetzen ist eine Möglichkeit. Würde mich natürlich auch interessieren, ob man da mit reiner Makro-Strickerei ohne Extra-Dateien was machen kann. Ich bin da leider nicht so begabt.
Wäre dann z.B. sowas: #define blowup(DATA) ..???... bla = blowup(0172AC00); ersetzt der Präprozessor zu bla = {0x01,0x72,0xAC,0x00};
Ja, genau an sowas dachte ich. Einfacher könnte es sein, bei den Eingabedaten gleich blowup(01 72 AC 00) schreibt. Das geht mit variadischen Macros (solche, die eine variable Zahl von Argumenten annehmen). Guck mal hier: https://gcc.gnu.org/onlinedocs/cpp/Variadic-Macros.html
@batman Das ist mit Makros so nicht möglich, weil man keinen String aufspalten kann. Mit C++11/C++14 könnte man sowas ähnliches mit templates und/oder constexpr funktionen lösen.
:
Bearbeitet durch User
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.