Arduino in C++ geschrieben?

Beitrag #7340433 wurde von einem Moderator gelöscht.
Beitrag #7340448 wurde von einem Moderator gelöscht.
Beitrag #7340454 wurde von einem Moderator gelöscht.
#7340473
Lesenswert?

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 #7340486
Lesenswert?

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!

Gast #7340488
Lesenswert?

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++

Gast #7340508
Lesenswert?

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.

#7340512
Lesenswert?

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?

#7340538
Lesenswert?

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
Lesenswert?

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++

Gast #7340544
Lesenswert?

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.

Gast #7340552
Lesenswert?

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" :-)

Gast #7340555
Lesenswert?

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.

Gast #7340567
Lesenswert?

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

Gast #7340728
Lesenswert?

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
Lesenswert?

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 schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren