Wird die C ++ - Standardbibliothek auf Arduino vollständig unterstützt?

9

Keine Abfrage über <string> , sondern über die Standard-Bibliothek als Ganzes zur Verwendung auf Mikrocontrollern.

Ich besitze noch kein Arduino-Board, um Code auszuführen, und wie der Titel sagt, bin ich neugierig, ob die C ++ - Standardbibliothek vollständig auf Arduino unterstützt wird und bereits Teil der Arduino-IDE ist. Es versteht sich von selbst, dass die Standard-Bibliothek wahrscheinlich die effizienteste, vollständig getestete und ressourcenminimale (was eine leicht redundante Phrase ist, wie ich bereits erwähnte Effizienz) öffentlich verfügbarer C ++ Code da draußen ist und das Leben viel einfacher machen würde für Mikrocontroller wie Arduino zu codieren.

Oder fehlt mir irgendwie der Punkt von Arduino / Mikrocontrollern? Da ihre Ressourcen so begrenzt sind, muss der meiste Code vollständig auf eine bestimmte Funktion zugeschnitten sein, und nicht generisch oder templatisiert sein?

Wenn die Standard-Bibliothek nicht Teil der Arduino IDE ist, dann wie bestimmte Bibliotheken wie <algorithm> und <bitset> eingebunden werden (Ich bin sehr versucht zu fragen "Warum ist es nicht an erster Stelle enthalten? "Aber das scheint zu breit."

    
NonCreature0714 01.06.2016, 17:34
quelle

1 Antwort

4

Arduino unterscheidet sich deutlich von anderen Embedded-System-Projekten. Zum einen verwendet es eine eigene Sprache basierend auf C / C ++. Zum anderen haben Sie es mit unglaublich spezialisierter Software zu tun, bei der es unwahrscheinlich ist, dass Sie die starke Abstraktion von <string> oder <bitset> benötigen. Im Gegensatz zu einem Homebrew-Kernel, bei dem es sich um Desktop-Hardware handelt und die Standardbibliothek die Entwicklung unterstützt. Außerdem möchten Homebrew-Kernel eventuell "selbst gehostet" werden, dh sie können GCC und libstdc ++ in den Benutzerbereich portieren. Auch das ist etwas, was Sie in einem Arduino-Kontext nicht sehen werden.

Wenn Sie jetzt über die Bibliotheken sprechen, die mit Arduino geliefert werden, ist das eine ganz andere Geschichte. Diese sind in C oder C ++ geschrieben und könnten von einer portierten Standardbibliothek profitieren, aber es ist unwahrscheinlich, dass sie hilfreich ist. Die STL zu portieren ist keine leichte Aufgabe und sie ist sehr, sehr groß . Der Großteil der Funktionalität wird viel mehr benötigt als nötig - brauchen Sie wirklich ein <string> oder <bitset> um Bytes zu lesen oder in einen Port zu schreiben? Denken Sie dann über die Kosten und die Komplexität aus Sicht des Entwicklers nach: Die Arduino-Entwickler übernehmen diese schwierige (wortwörtlich nicht vorgesehene) Aufgabe, sie zu implementieren, und unterstützen sie, wenn der größte Teil davon geht unbenutzt oder herausgerissen werden (denke an benutzerdefinierte Zuordner.)

Und ein letzter Punkt, es gibt eine Fülle von Arduino Boards mit verschiedenen Spezifikationen. Die Standardbibliothek ist eine Abstraktion, die auf einer vorhandenen C-Bibliothek basiert. An einem Punkt müssen Sie sich schmutzig machen und den Code für die C-Bibliothek und die Laufzeit schreiben, wodurch die Standardbibliothek unportabel wird (think libstdc ++ - arm-none-eabi-newlib).

Wenn Sie damit nicht zufrieden sind, können Sie immer noch eine Teilmenge der STL portieren, indem Sie ihrem Tutorial Schreiben Sie Ihre eigene Bibliothek für Arduino.

    
uh oh somebody needs a pupper 01.06.2016, 18:42
quelle