Ich möchte das Projekt "sipringer" von http://forum.arduino.cc/index.php?topic=234204.0 (aktuellste Version ganz unten auf der Seite) compilieren und fliege immer wieder mit der Meldung (gekürzt): "... error: unable to find a register to spill in class 'NO_REGS'" raus. Nach eigenen Recherchen ist das ein GCC-Bug und man soll man IDE updaten, hilft aber nix. Ich benutze bereits die 1.6.13 Houry Build vom 3.11.2016 (unter Mac OSX). Der Fehler tritt bei allen AVR-basierten Arduinos auf (Nano, Uno, Mega ...), nicht jedoch beim DUE. Der ist mir aber zu groß für das Projekt, der Code soll auch auf eine, Nano laufen. Ich konnte die auslösende Position eingrenzen, hat irgendwas mit "sprintf" zu tun. Wenn ich die drei Zeilen auskommentiere, läuft ddie Compilation durch. Was macht eigentlich "sprintf" genau? Kann man das evtl. mit einer eigenen Funktion ersetzen? In der Arduino-Doku kommt das garnicht vor. :-( Hat jemand eine Idee, wo das Problem steckt oder wie man es umgehen kann? Danke! Bei Interesse kann ich auch die ganze Fehlermeldung posten, die ist aber ziemlich lang ...
:
Bearbeitet durch User
Frank E. schrieb: > Nach eigenen Recherchen ist das ein GCC-Bug und man soll man die > IDE updaten Was hilft es, die IDE zu aktualisieren, wenn der Compiler schuld ist. Welche Compilerversion benutzt du? Welcher Prozessor ist in der IDE eingestellt und auf welchem soll der Code laufen?
Wolfgang schrieb: > Frank E. schrieb: >> Nach eigenen Recherchen ist das ein GCC-Bug und man soll man die >> IDE updaten > > Was hilft es, die IDE zu aktualisieren, wenn der Compiler schuld ist. > > Welche Compilerversion benutzt du? > > Welcher Prozessor ist in der IDE eingestellt und auf welchem soll der > Code laufen? In der Mac-Version ist der Compiler quasi in die IDE eingebettet - Mac-Apps sind eigentlich Ordner mit allerlei "Content". Ich habe es zwar nicht im EInzelnen geprüft, aber ich gehe davon aus, dass da immer der jeweils aktuellste Compiler drin ist. Wenn ich mir "Paketinhalt anzeigen" lasse, finde ich dort einen Ordner "gcc" mit der Version 4.9.2 ...
Kaj G. schrieb: > https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60040#c13Fixed in > trunk (7.0) Hmm ... und wie bekomme ich das in meine Arduino-IDE für OSX hinein?
> Was macht eigentlich "sprintf" genau?
Sprintf fügt Variablen in eine Zeichenkette ein und schreibt das
Ergebnis in einen Buffer (Array von chars).
1 | char puffer[30]; |
2 | char* name="Stefan"; |
3 | int alter=42; |
4 | sprintf(puffer, "Hallo %s, du bist %d Jahre alt", name, alter); |
Befüllt den Puffer mit dem Text "Hallo Stefan, du bist 42 Jahre alt".
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.