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
|
Anzeige
|
Arduino in C++ geschrieben?
Gast
#7340397
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.
Gast
#7340441
Nein. Alles was der GCC mitbringt steht zur Verfügung.
Auch C und ASM Anteile sind vorhanden.
Beitrag #7340448 wurde von einem Moderator gelöscht.
Beitrag #7340454 wurde von einem Moderator gelöscht.
Gast
#7340466
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.
Gast
#7340467
Die meinen mit Arduino Abart den Sketch!
Gast
#7340470
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.
Gast
#7340474
Ich schreibe immer alle nötigen Includes ausdrücklich hin, damit mein externer Editor und Linter zufrieden ist.
Gast
#7340486
Hatte ich doch geschrieben! Schau was ich mit transpiliert meine!
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!
Gast
#7340488
Nenn eine INO cpp und mach kein Include rein und schau was passiert wenn man pinmode() drin hat. Ist halt kein gültiges c++
Gast
#7340490
Wenn das mal keine Haarspalterei ist. Die Frage war:
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.
Gast
#7340501
Dann nenne sie doch PDE
Gast
#7340508
Ja, aber er will vielleicht wissen warum man es als Abart bezeichnet. Vielleicht wegem dem Ino mit fehlendem Include!
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?
Gast
#7340513
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++!
Gast
#7340515
"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.
Gast
#7340519
Und rein zufällig compiliert der GCC das auch noch ...
Gast
#7340527
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.
Gast
#7340540
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++
Gast
#7340544
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.
Gast
#7340552
Man könnte auch eine main.cpp schreiben, welche die *.ino Datei inkludiert. Ungefähr so:
Und schon habe ich eine neue Programmiersprache erfunden. Ich nenne sie "Arduino Light" :-)
Gast
#7340555
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.
Gast
#7340567
Wer hat Erfinder gesagt?? Er ist der derzeitige Omega! https://github.com/pnndra
Einen Sketch Ino mit pinmode() ohne include kann man so nicht kompilieren, MyFakeC++Sketch.ino als Beispiel kann man nicht direkt kompilieren
Gast
#7340570
Mir ist vollkommen unklar warum ihr den Troll füttert. Ist von Anfang an glasklar gewesen was er mit dem Thread beabsichtigt.
Gast
#7340571
Gast
#7340574
Mensch Stefan, es gibt keine Programmiersprache namens "Arduino". Auch dein Bsp. ist reines C/C++. Fütter du jetzt nicht noch sinnlos den Troll.
Gast
#7340576
Bitte gehen sie weiter. Hier gibt es nichts zu sehen.
Ein C++ mit z.B. cout ohne include kannste auch nicht kompilieren, so what? ;)
Gast
#7340728
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.
Gast
#7341115
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. Antwort schreibenBitte melde dich an, um einen Beitrag zu schreiben. |
Anzeige
|