0b00111001 -> 0x39
-
Guten Abend
Mein Iar-Compiler (AVR) meckert, sobald er auf die binaere Darstellung stösst. Beispiel: PORTB = 0b00111001 akzeptiert er nicht und will unbedingt ein 0x39 sehen.
Der GCC oder der Imagecraft Compiler haben damit aber keine Probleme.Hat jemand eine Idee, wie ich dieses Verhalten umschiffen kann?
Besten Dank im voraus
-
Naja ich würd sagen du guckst mal in die Anleitung zu diesem Compiler, 0b... gehört nicht zum Standard.
-
Das Compiler-Handbuch habe ich schon durchgeackert. Steht nichts darin. Aber dass die binaere Darstellungsform nicht Standart ist, habe ich nicht gewusst.
-
Hallo, ich mach auch viel mit AVR und habe keine Lösung. Ich verwende immer Hex, und die binäre Darstellung als Kommentar dahinter.
Villeicht kann man auch in C++ eine Umwandlung als Metatemplate schreiben. Aber ich weiß gar nicht inwiefern C++ unterstützt ist (dachte es ist nicht ganz implementiert). Ich verwende nur C.
-
Das einzige, was mir als (Schnapps)Idee einfaellt, ist eine Header-Datei zu erstellen und dort 256 defines einzutragen
#define b00000000 0x00
#define b00000001 0x01
#define b11111111 0xFF
-
Villeicht kann man auch in C++ eine Umwandlung als Metatemplate schreiben.
Kann man. Ohne Error-Checks:
template <unsigned int I> struct bin { enum { value = bin<I/10>::value << 1 | I % 10 }; }; template <> struct bin<0> { enum { value = 0 }; }; int main() { cout << bin<1001>::value << endl; }
-
mal eben gemerkt.. thanks