Ein Angebot von

Thema: C und C++ in einer Embedded-Anwendung mischen

erstellt am: 22.12.2019 18:03

Antworten: 1

Diskussion zum Artikel



C und C++ in einer Embedded-Anwendung mischen


Viele Embedded-Anwendungen sind noch in C geschrieben, doch immer mehr Entwickler programmieren inzwischen in C++. In einigen Applikationen werden sogar beide Sprachen gemeinsam verwendet. Ist das sinnvoll?

zum Artikel


bearbeiten

Antworten

JcHartmut





dabei seit: 19.03.2019

Beiträge: 24

Kommentar zu: C und C++ in einer Embedded-Anwendung mischen
22.12.2019 18:03

Widerspruch zu dem Warum: Die kurze Antwort ist Legacy-Code. Das suggeriert, wenn man schon einmal endlich C++ angefangen hat, dann nie wieder C es sei denn wegen dem Legacy-Problem. Das ist falsch wenn andererseits in der gleichen Printausgabe Sonderheft ESE auf Seite 6 C noch vor C++ als häufigste genutzte Programmiersprache angegeben wird. Der Komplettumstieg ist C++ besser? wird in letzter Zeit häufig diskutiert. Ein Argument für C ist: bei C weiß man eher was im Maschinencode abläuft was nicht unwichtig für Embedded Anwendungen, im Treiberbereich etc. ist.

Zweiter Widerspruch, bezüglich C mit dem C++-Compiler zu übersetzen: Tatsächlich ist jedoch große Sorgfalt geboten, um den Code zu „bereinigen“ . Es gibt eigentlich und faktisch nur wenige Dinge, die ein C++-Compiler nicht aus C übersetzen kann. Diese fallen beim Compilieren auf und sind meist schnell zu bereinigen. Allerdings, die Erfahrung des Autors kann aus einer anderen Ecke kommen: Legacy Code ist eben oft gewachsen und nicht immer geradlinig durchschaubar, und insbesondere für bestimmte Zielsystembedingungen geschrieben. In der Vergangenheit hatte sich bei C meist die Erfahrung breit gemacht ist doch sowieso alles speziell, also können wir ganz speziell, beispielsweise direkte Hardwarezugriffe hineinprogrammieren. Der bessere Ansatz, ich lebe ihn schon seit 25 Jahren, ist, C so zu schreiben, dass es mit verschiedenen Compilern übersetzbar ist (insbesondere mit diversen C++), auf verschiedenen Zielsystemem lauffähig ist, über Hardwarezugriffs-Subfunktionen und einer OSAL-Schicht (Operation System Adaption Layer). Man kann portablen C-Code auf dem PC (unter C++) funktional vortesteten und spart viel Zeit bei der Fehlersuche im Zielsystem.

Die beiden genannten Möglichkeiten A und B sind richtig. Beides geht. In C++ muss man die C-Routinen mit extern C definieren. Keinesfalls nicht definieren sondern einfach so aufrufen. Das öffnet aber eine ganz andere Diskussion, Style Guides für C und C++.

Jedenfalls kann man mischen und sollte auch mischen. C ist maschinennäher und an einigen Stellen besser geeignet, C++ ist übersichtlicher. C++ frei beliebig angewendet hat auch einige wesentliche Nachteile, wieder (nicht nur) eine Frage von Style Guides. Doch dies sprengt den Kommentarrahmen.

Hartmut Schorrig


bearbeiten

Antworten

Antwort schreiben

Titel:


Nachricht:

 



Zur Wahrung unserer Interessen speichern wir zusätzlich zu den o.g. Informationen die IP-Adresse. Dies dient ausschließlich dem Zweck, dass Sie als Urheber des Kommentars identifiziert werden können. Rechtliche Grundlage ist die Wahrung berechtigter Interessen gem. Art 6 Abs 1 lit. f) DSGVO.

Thema abonnieren:

Email:
*Ich bin mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung einverstanden.
Antwort abschicken