Ich kenn mich zwar nciht mit Python aus, aber das oben sind mir nicht danach aus.
Kann es sein, dass du das Script vergessen hast?
Hallo,
ich bin gerade auf Linux umgestiegen und mir gefällt die Einschränkung des neuen Compilers, dass ich keine Binären Zahlen (alla "0b") mehr verwenden kann, nicht, daher habe ich einen Präprozessor in Python geschrieben, mit dem man Binärwerte in den Quelldateien automatisch in Dezimalwerte umwandeln kann.
Ich werde ihn mir noch in mein Makefile einbauen, damit ich mich darum nicht mehr zu kümmern brauche, ein vorläufiger Entwurf sieht so aus:
[...]
convert:
@echo "Backup alter Source-Dateien machen..."
mkdir ConvBackup
cp $(PRJSRC) ConvBackup/
@echo "Konvertieren..."
/pfad/zur/datei/bindec.py $(PRJSRC) >> /dev/null
convbackupback:
@echo "Backup zurück..."
cp ConvBackup/* .
rm -R ConvBackup/
[...]
Wichtig ist dabei vor allem das Backup der Original Quelldateien, Binärwerte sind nunmal (vor allem bei Bitmasken, o.ä) einfach besser zu lesen, nicht vergessen dieses dann wiederherzustellen!
Noch ein paar Anmerkungen:
Leider hat das Programm (noch) keine Fehlererkennung, es unterstützt zudem nur exakt 8bit lange Binärwerte (z.B.: 0b10101010) und sie müssen auch genauso geschrieben werden, alles andere führt zu unerwünschten Ergebnissen. Aber das könnt ihr ja gerne ändern. Wäre super, wenn ihr verbesserte Versionen wieder hier einstellt!
Natürlich kann ich keine Haftung für verlorene oder kaputte Dateien übernehmen...
Ich hoffe, irgendwer kann das Programm gebrauchen,
viele Grüße,
Daniel
Ich kenn mich zwar nciht mit Python aus, aber das oben sind mir nicht danach aus.
Kann es sein, dass du das Script vergessen hast?
www.subms.de
Aktuell: Flaschcraft Funkboard - Informationssammlung
danke hab ich ja fast vergessen!
Für diese Problematik habe ich mal ein präprozessor-makro geschrieben, welches wie folgt aussieht. (Es ist jedoch nur für 8-Bit Werte(unsigned char))
und angewandt kann es dann so werden:Code:#define CATHREL_BIN8(a,b,c,d,e,f,g,h) ((a)*128+(b)*64+(c)*32+(d)*16+(e)*8+(f)*4+(g)*2+(h))
Code:unsigned char y; y = CATHREL_BIN8(1,1,1,0,1,0,1,0);
Nun denn, packen wir einfach das Übel an der Wurzel und lehren gcc, wie er mit 0b* umzugehen hat. Wenn wir schon Open Source verwenden, dann sind wir ja Master of CodeZitat von danst
Und sooo viel zu patchen ist's wirklich nicht! Schau selbst:
Zitat von <GCC>/gcc/cpplib.hDabei sind das nicht alles Änderungen, sondern teilweise noch der Originalcode, damit die Stellen besser zu finden sind.Zitat von <GCC>/gcc/cppexp.c
Disclaimer: none. Sue me.
Wenn du WinAVR installierst kriegst du auch alle patches die in dem Paket drin sind mitgeliefert -- liegen in irgendeinem Unterordner, und dann kannst du die einfach in deinen avr-gcc unter Linux reinbauen. Also keine wirkliche Notwendigkeit für einen Preprocessor ...
Wie man Fragen richtig stellt:
http://www.lugbz.org/documents/smart-questions_de.html
Lesezeichen