Forum: Mikrocontroller und Digitale Elektronik Arduino in C++ geschrieben?


von bronko (Gast)


Lesenswert?

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.
von EAF (Gast)


Lesenswert?

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.

von Georg M. (g_m)


Lesenswert?

> Arduino in C++ geschrieben?

IDE: Java
https://de.wikipedia.org/wiki/Arduino_(Plattform)

Beitrag #7340448 wurde von einem Moderator gelöscht.
Beitrag #7340454 wurde von einem Moderator gelöscht.
von Megamaker C++Faker (Gast)


Lesenswert?

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.

von Megamaker C++Faker (Gast)


Lesenswert?

Die meinen mit Arduino Abart den Sketch!

von EAF (Gast)


Lesenswert?

Der Builder fügt ein include Arduino.h ein.
Steht alles in der Doku....
Muss man nur lesen.

von J. S. (jojos)


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.

von Stefan F. (Gast)


Lesenswert?

Ich schreibe immer alle nötigen Includes ausdrücklich hin, damit mein 
externer Editor und Linter zufrieden ist.

von Megamaker C++Faker (Gast)


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!

von Megamaker C++Faker (Gast)


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

von Stefan F. (Gast)


Lesenswert?

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.

von J. S. (jojos)


Lesenswert?

nimm ein .cpp und lass ein Include fehlen. Das ist ja wohl kein 
Argument.

von s.c.n.r. (Gast)


Lesenswert?

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

von Megamaker C++Faker (Gast)


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.

von J. S. (jojos)


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?

von Megamaker C++Faker (Gast)


Lesenswert?

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

von Stefan F. (Gast)


Lesenswert?

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.

von Wolfgang (Gast)


Lesenswert?

Stefan F. schrieb:
> "it IS a language by itself"

Und rein zufällig compiliert der GCC das auch noch ...

von EAF (Gast)


Lesenswert?

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.

von J. S. (jojos)


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.

von Megamaker C++Faker (Gast)


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

von Thomas (Gast)


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.

von Stefan F. (Gast)


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

von EAF (Gast)


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.

von Megamaker C++Faker (Gast)


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

von Interpretierer (Gast)


Lesenswert?

Mir ist vollkommen unklar warum ihr den Troll füttert. Ist von Anfang an 
glasklar gewesen was er mit dem Thread beabsichtigt.

von Megamaker C++Faker (Gast)


Lesenswert?

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

von Interpretierer (Gast)


Lesenswert?

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.

von Interpretierer (Gast)


Lesenswert?

Bitte gehen sie weiter. Hier gibt es nichts zu sehen.

von M. K. (sylaina)


Lesenswert?

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? ;)

von Blechbieger (Gast)


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.

von temp (Gast)


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.

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
Noch kein Account? Hier anmelden.