Hi. Lese hier meistens nur mit und habe schon öfter 'Arduino C++' oder 'Arduino Abart C++' gelesen. Für mein Verständnis ist Arduino in C++ geschrieben. Gibt es konkrete Stellen im Arduino-Code die den C++ Standard brechen? Bronko
Beitrag #7340433 wurde von einem Moderator gelöscht.
bronko schrieb: > Gibt es konkrete Stellen im Arduino-Code die den C++ Standard brechen? Nein. Alles was der GCC mitbringt steht zur Verfügung. bronko schrieb: > Für mein Verständnis ist Arduino in C++ geschrieben. Auch C und ASM Anteile sind vorhanden.
Beitrag #7340448 wurde von einem Moderator gelöscht.
Beitrag #7340454 wurde von einem Moderator gelöscht.
bronko schrieb: > Gibt es konkrete Stellen im Arduino-Code die den C++ Standard brechen? Da meinst du den Sketch? Ja der Sketch hat ja kein Includes, trotzdem geht pinmode() Das ist schon mal kein lauffähiges C++! Das wird transpiliert1.
Der Builder fügt ein include Arduino.h ein. Steht alles in der Doku.... Muss man nur lesen.
Das Buildsystem pappt eben das .ino und die header zusammen um es dem Anwender einfacher zu machen. Trotzdem bleibt es C++ was der Compiler versteht. Und die Dateiendungen sind nur Konvention, statt .cpp oder .ino Könnte ich die auch .otto nennen. Mache ich aber nicht.
Ich schreibe immer alle nötigen Includes ausdrücklich hin, damit mein externer Editor und Linter zufrieden ist.
EAF schrieb: > Der Builder fügt ein include Arduino.h ein. > Steht alles in der Doku.... > Muss man nur lesen. Hatte ich doch geschrieben! Schau was ich mit transpiliert meine! Megamaker C++Faker schrieb: > Das ist schon mal kein lauffähiges C++! Das wird > transpiliert1. DER Punkt ist dass DER SKETCH EBEN KEIN GÜLTIGER C++ IST sondern eine eigenes Ding. Ein Ino kann man einem Standard C++ compiler eben nicht präsentierenen. Und das war gefragt. Und das ist keine Haarspalterei!
J. S. schrieb: > Und die Dateiendungen sind nur Konvention, statt .cpp oder > .ino Könnte ich die auch .otto nennen. Mache ich aber nicht. Nenn eine INO cpp und mach kein Include rein und schau was passiert wenn man pinmode() drin hat. Ist halt kein gültiges c++
Megamaker C++Faker schrieb: > Und das war gefragt. Wenn das mal keine Haarspalterei ist. Die Frage war: bronko schrieb: > Gibt es konkrete Stellen im Arduino-Code die den C++ Standard brechen? Ob der TO damit jetzt konkret Arduino Sketche meinte, oder das Framework, oder den Compiler ... nichts genaues weiß man nicht.
nimm ein .cpp und lass ein Include fehlen. Das ist ja wohl kein Argument.
Megamaker C++Faker schrieb: > Nenn eine INO cpp und mach kein Include rein und schau was passiert wenn > man pinmode() drin hat. Ist halt kein gültiges c++ Dann nenne sie doch PDE
Stefan F. schrieb: > Ob der TO damit jetzt konkret Arduino Sketche meinte, oder das > Framework, oder den Compiler ... nichts genaues weiß man nicht. Ja, aber er will vielleicht wissen warum man es als Abart bezeichnet. Vielleicht wegem dem Ino mit fehlendem Include! J. S. schrieb: > nimm ein .cpp und lass ein Include fehlen. Das ist ja wohl kein > Argument. Agrument ist dass man ein Sketch Ino mit pinmode() einem standard C++ Compiler nicht präsentieren kann. Auch wenn man es umbenennt in cpp.
Steht das wirklich im C/C++ Standard wie das Buildsystem aussehen muss? Die Syntax ist Korrekt auch wenn die pinMode Definition nicht in der Datei oder einem #include steht. Includes können dem Compiler auch per Kommandozeilenaufruf mitgegeben werden. Was soll daran 'ungültiges' C/C++ sein?
Hier was für den bronko vom Leiter des Arduino Repository https://github.com/arduino/reference-en/issues/476#issuecomment-461491446 Und jeder weiss was ich meine. Trotzdem heulen sie hier rum. Macht das inklude halt selber rein, dann ist dann gültiges c++!
Megamaker C++Faker schrieb: > https://github.com/arduino/reference-en/issues/476#issuecomment-461491446 "it IS a language by itself" Sorry, aber da will sich wohl jemand mit fremden Federn schmücken. Genau so gut könnte ich behauten, das mein PKW mit abgesägtem Dach ein neuartiges Cabrio sei.
Stefan F. schrieb: > "it IS a language by itself" Und rein zufällig compiliert der GCC das auch noch ...
Megamaker C++Faker schrieb: > Agrument ist dass man ein Sketch Ino mit pinmode() einem standard C++ > Compiler nicht präsentieren kann. Meinst du wirklich, dass ein paar drangeklebte, von C übersetzte Funktionen, den C++ Compiler verändern? So blöd muss man erstmal sein! Meinen Glückwunsch.
Es gibt viele Buildsysteme die den Umgang mit komplexen Projekten erleichtern und generierten Code oder defines dazubauen. Und trotzdem behaupten die nicht gleich eine neue Sprache kreiert zu haben. Und das man in C++ echte Typen bauen kann ist auch schon länger bekannt. In Arduino werden C/C++ Features angewendet, aber keine neue Sprache geschaffen.
J. S. schrieb: > Steht das wirklich im C/C++ Standard wie das Buildsystem aussehen muss? Es kommt darauf an was es denn sein möchte?!? Was möchte ein Sketch sein?? A sketch is the name that Arduino uses for a program Aha also ein Programm möchte es sein, deklariert Arduino Docs. Nicht ein Programm Schnipsel sondern ein Programm! Und was ist ein Programm?? Ein Computerprogramm oder kurz Programm ist eine den Regeln einer bestimmten Programmiersprache genügende Folge von Anweisungen (bestehend aus Deklarationen und Instruktionen), um bestimmte Funktionen bzw. Aufgaben oder Probleme mithilfe eines Computers zu bearbeiten oder zu lösen Ergo kein c++
Megamaker C++Faker schrieb: > Und das ist keine Haarspalterei! Doch, genau das ist es. "Arduino" ist ganz schnödes C/C++, das halt einfach sehr benutzerfreundlich gekapselt wurde. Du könntest dir selbst ein Makefile erstellen, dass die .ino Dateien entsprechend anreichert und klaglos verarbeitet. Schau dir mal etwas komplexere Softwareprojekte an. Die kannst du auch nicht einfach so 1:1 in den GCC kippen und ein lauffähiges Endprodukt erwarten. Aber trotzdem kommt da niemand auf die Idee zu behaupten, man hätte eine neue Sprache erfunden. Die Aussage vom Arduino-Team werte ich einfach mal als Versuch ein Alleinstellungsmerkmal zu schaffen, gepaart mit der üblichen Überheblichkeit dieser "Maker"-Community.
Man könnte auch eine main.cpp schreiben, welche die *.ino Datei inkludiert. Ungefähr so:
1 | #include <Arduino.h> |
2 | #include "Projektname.ino" |
3 | |
4 | int main() |
5 | {
|
6 | setup(); |
7 | while (1) loop(); |
8 | }
|
Und schon habe ich eine neue Programmiersprache erfunden. Ich nenne sie "Arduino Light" :-)
Thomas schrieb: > Die Aussage vom Arduino-Team werte ich einfach mal als Versuch ein > Alleinstellungsmerkmal zu schaffen, gepaart mit der üblichen > Überheblichkeit dieser "Maker"-Community. Tipp: Du, mache Faktencheck! Der genannte/zitierte Type ist keinesfalls einer der Arduino Erfinder. Der "Megamaker C++Faker" ist einfach nur ein Dummschwätzer/Troll.
EAF schrieb: > Der genannte/zitierte Type ist keinesfalls einer der Arduino Erfinder. > > Der "Megamaker C++Faker" ist einfach nur ein Dummschwätzer/Troll. Wer hat Erfinder gesagt?? Er ist der derzeitige Omega! https://github.com/pnndra EAF schrieb: > Megamaker C++Faker schrieb: >> Agrument ist dass man ein Sketch Ino mit pinmode() einem standard C++ >> Compiler nicht präsentieren kann. > > Meinst du wirklich, dass ein paar drangeklebte, von C übersetzte > Funktionen, den C++ Compiler verändern? > So blöd muss man erstmal sein! > Meinen Glückwunsch. Einen Sketch Ino mit pinmode() ohne include kann man so nicht kompilieren, MyFakeC++Sketch.ino als Beispiel kann man nicht direkt kompilieren
Mir ist vollkommen unklar warum ihr den Troll füttert. Ist von Anfang an glasklar gewesen was er mit dem Thread beabsichtigt.
Thomas schrieb: > "Arduino" ist ganz schnödes C/C++, das halt einfach sehr > benutzerfreundlich gekapselt wurde. Du könntest dir selbst ein Makefile > erstellen, dass die .ino Dateien entsprechend anreichert und klaglos > verarbeitet. Beitrag "Re: Arduino in C++ geschrieben?"
Stefan F. schrieb: > Und schon habe ich eine neue Programmiersprache erfunden. Ich nenne sie > "Arduino Light" :-) Mensch Stefan, es gibt keine Programmiersprache namens "Arduino". Auch dein Bsp. ist reines C/C++. Fütter du jetzt nicht noch sinnlos den Troll.
Megamaker C++Faker schrieb: > Einen Sketch Ino mit pinmode() ohne include kann man so nicht > kompilieren, MyFakeC++Sketch.ino als Beispiel kann man nicht direkt > kompilieren Ein C++ mit z.B. cout ohne include kannste auch nicht kompilieren, so what? ;)
Die ersten C++ Versionen wurden mit C-Compilern und viel Präprozessormagie übersetzt und trotzdem bezweifelt niemand dass das eine eigene Sprache ist. Compiler welche direkt C++ verstehen gab es erst später.
Ich debugge häufig Arduino Sachen mit der Segger IDE. Leider habe ich noch keinen Weg gefunden, für ino-Dateien ein Syntaxhighlighting hinzukriegen. Also packe ich meinen Code in ein oder mehrerer cpp Datei und damit Arduino zufrieden ist eine komplett leere ino-Datei dazu. Und dann ist es auch wieder komplett konform, da leere Dateien nicht verboten sind. In den cpp-Dateien müssen dann natürlich auch die #includes rein.
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.