Unterschied C C++ C#

Hi Leute. DerCode vom Arduino wird ja bekanntlic in C geschrieben. Kann Mir mal Jemand dann den Unterschied zwischen C++und C# erklären. Die Unterschiede können doch nicht so groß sein oder.

Bitte stellen Sie Ihre Frage auf Englisch im englischen Bereich des Forums.

Thema in den deutschen Bereich verschoben.

Nö, in C++, was aber "abwärtskompatibel" zu C# ist.

  • C# prozedural
  • C++ objektorientiert

Mir kommen die Unterschiede doch recht groß vor :blush:

Nö, ist objektorientiert.

Wie gruselig!

c++ ist eine Erweiterung zu c und ist objektorientiert. Du kannst c Code ohne Probleme in einem c++ Projekt verwenden, aber nicht umgekehrt.

LG Simon

Danke das Du mir das erklärt hast. Aber eigentlich habe ich die Frage nicht gestellt :slight_smile:.

Finde ich interessant. Fast jedes Programm hat ein Serial.begin(xxx) in der setup() Funktion.
Wie kommt man da drauf, dass das C sein könnte?

Die Arduino IDE basiert auf c/c++
Es ist außerdem möglich den Arduino auch mit c zu programmieren (z.B. mit Atmel Studio) hierbei beginnt das Programm mit der für c üblichen main Funktion

LG Simon

Wenn das irgendwann mal gestimmt hat, damit ist es schon länger vorbei.
Die beiden Sprachen haben die gleichen Wurzeln, sind aber nicht "abwärtskompatibel"

Nicht die IDE!
Die basiert auf Java und die neuere auf JavaScript.

Übersetz- und editierbar sind C, C++ und Assembler Codes

Auch das ist mit Arduino möglich.
Sowohl in C als auch in C++

Vielen dank für die Richtigstellung.

Entschuldige für diese Falschinformation. Ich bin noch in der Ausbildung und unser Lehrer hat uns gesagt, dass die Sprachen "abwärtskompatibel" wären.

LG Simon

Teil teils. Wenn du mit Funktionspointer in C arbeitest und den Code dann in C++ compilieren willst ist's schnell vorbei mit der Abwärtskompatibilität.

Die IDE von Arduino ist in Java geschrieben (nicht browserbasierte Versionen)
Die Programmiersprache mit der Microcontroller auf der Arduinoplatine programmiert wird ist C / C++.
Du hast Recht, daß ein Arduino-Sketch kein main() enthält.
Das ist so weil die IDE hinter den Kulissen jede Menge Dinge macht um das Programmieren so einfach wie möglich zu gestalten. Unter anderem fügt die IDE ein Programmstück hinzu, wo in der main() - Funktion unter anderem einmal setup() und dann immer wieder loop() aufgerufen wird. Außerdem weden Prototypen der Funktionen eingefügt und auch alle Arduinospezifischen Funktionen (wie zB pinMode(), digitalWrite(), digitalRead() usw).

Grüße Uwe

Man kann einen Arduino-Sketch mit main() schreiben...

constexpr uint8_t LED_PIN {4};
constexpr uint32_t INTERVAL {1000};

int main(void) {
  uint32_t timeStamp;

  init();
  pinMode(LED_PIN, OUTPUT);
  while (1) {
    uint32_t now {millis()};
    if (now - timeStamp >= INTERVAL) {
      timeStamp = now;
      digitalWrite(LED_PIN, !digitalRead(LED_PIN));
    }
  }
  return 0;
}

Ist durchaus ein Arduino Sketch.

Funktioniert dann am Uno noch millis() oder liefert das immer den selben Wert?

Nein.
Es fehlt am init Code.
Kein Timer wird gestartet und einiges weitere ebenso nicht.
Das ist ja der Trick/Ziel an der Sache

Ja, das funktioniert, weil init() aufgerufen wird.

1 Like

OK, dann funktioniert es.
Mit init, ja, ohne nicht.

Habe ich glatt in deinem Programm übersehen.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.