Forum: PC-Programmierung [C/C++] Programmier 'Richtlinie' / Standard für µC


von Simon W. (simon1711)


Lesenswert?

Hallo zusammen,

ich stecke momentan in einem ziemlich umfangreichen Bastler Projekt mit 
einem STM32 in C und habe mich das ein oder andere Mal schon gefragt, ob 
es eine Richtlinie auch speziell für die Mikrocontrollerprogrammierung 
gibt. Was wird den in der Industrie so angewendet?
Ich hätte gerne einen roten Faden, der sich durch meine Programme zieht. 
Momentan bin ich sehr inkonsistent was Funktionen und Variablen 
betrifft.
Mal hier mal dort und ziemlich global.

Viele Grüße

Simon

von A. H. (ah8)


Lesenswert?

ISBN 978-0321113580 wäre ein guter Einstieg.

von Dennis S. (eltio)


Lesenswert?

Wir nutzen die MISRA-Regeln mit einigen Ausnahmen die wir in der 
Team-Runde diskutiert haben. Zusätzlich gibt es abteilungsweite 
Coding-Style-Guides.

von Tcf K. (tcfkao)


Lesenswert?

@Dennis: Gibt es die auch für C++ und eventuell irgendwo kostenlos 
verfügbar?

von Simon W. (simon1711)


Lesenswert?

Wow, danke!
Das Buch ist dann schon ziemlich dick ;)
Vielleicht kommt ja noch was kompakteres/ weniger umfangreiches.

von Dennis S. (eltio)


Lesenswert?

Tcf K. schrieb:
> @Dennis: Gibt es die auch für C++ und eventuell irgendwo kostenlos
> verfügbar?

Ja, es gibt eine C und eine C++-Variante. Ob es die legal und kostenlos 
gibt weiß ich nicht. Aber wenn dann vermutlich nur eine ältere Version 
oder ein "draft".

Gruß
Dennis

Edit: Aber denk nicht, dass das ein "Lehrbuch" ist! Wenn du einen 
Einstieg brauchst dann solltest du einfach mal nach "Coding style" 
suchen oder so. Auch da gibt es viele verschiedene Meinungen und das 
wichtigste ist in der Regel einen konsistenten Weg für dich zu finden. 
In der Praxis macht es ja doch jede Firma anders..

: Bearbeitet durch User
von A. H. (ah8)


Lesenswert?

Tcf K. schrieb:
> Gibt es die auch ... eventuell irgendwo kostenlos
> verfügbar?

Versuche es doch einmal (ganz altmodisch :-) in einer klassischen 
Bibliothek Deines Vertrauens. Gut sortierte Bibliotheken an 
Universitäten mit technischen Fachrichtung haben so etwas oft da oder 
können es zumindest besorgen.

: Bearbeitet durch User
von Walter T. (nicolas)


Lesenswert?

Simon W. schrieb:
> Ich hätte gerne einen roten Faden, der sich durch meine Programme zieht.

Das hätten viele gern. SCNR.

von Stephan (Gast)


Lesenswert?

Hi Simon,
wie die anderen schon sagten, mal ein gutes Buch hernehmen und im Netz 
nach Style-Guids schauen.
Aber jede Firma kocht da mehr oder weniger sein eigenes Süppchen.

zu Variablen:
Wie einer hier mal richtig schrieb: "So lokal wie möglich und so global 
wie nötig!"
Den Satz finde ich sehr gut.
Brauche ich:
- eine Variable nur in einer Funktion, dann rein in die Funktion.
- eine Variable mehrere Durchläufe einer Funktion, dann rein in die 
Funktion und static machen.
- eine Variable in mehren Funktionen, dann nur Modul-Global erstellen.
- eine Variable im kompl. Programm, dann Programm-Global erstellen.

Um die geschützten Modul-Globale-Variablen zu lesen oder zu beschreiben, 
gibt es immer noch die einfachen Set- und Get-Funktionen.

Bei Funktionen, lernt man es am besten durch lesen von Programmen von 
anderen Programmierern. (meine Erfahrung)
z.B.: Wie soll eine Funktion einen Fehler melden?!?
atoi
- hier wird ein gültiges Ergebnis, als Fehlercode missbraucht.
d.h. wenn eine '0' als Ergebnis in Betracht kommt, muß man den String 
selbst parsen, um zu sehen, war es ein Fehler oder eine richtige '0'.
Das macht man einmal und dann schreibt man sich seine eigene Funktion. 
:-)

sprintf
- hier wird nach vollendeter Tat die Anzahl der geschriebenen Zeichen 
zurückgeliefert, bzw ein Fehlercode.
Sollte nun der Buffer zu kleine gewesen sein(Anzahl der geschriebenen 
Zeichen +1 > Buffergröße), so ist der schaden schon angerichtet und der 
Programmierer kann nur nachträglich versuchen etwas zu retten.

Ob man solche Funktionen verwendet bzw. in der Art selber schreibt, kann 
sehr schnell beantworten. Ich hoffe mit NEIN.

Es gibt noch andere Funktionen, bei denen man sich überlegt sie 
einzusetzen, dies sind nur Beispiele.

Auch die Anzahl bzw die Orte der Ausgänge(returns) einer Funktion, 
können festgelegt werden.
Bei uns war es so, das nur nach Prüfung der Eingangsparameter und am 
Ende der Funktion ein 'return' erlaubt war. Zwischen drin, war es 
verboten.

Wie gesagt es verschiedene Möglichkeiten.

Was aber wirklich wichtig ist, wenn du einmal damit anfängst, dann auch 
durchziehen!!!! Nicht nach 1 Woche schlapp machen. :-)

von beric (Gast)


Lesenswert?

Dennis S. schrieb:
> Tcf K. schrieb:
>> @Dennis: Gibt es die auch für C++ und eventuell irgendwo kostenlos
>> verfügbar?
>
> Ja, es gibt eine C und eine C++-Variante. Ob es die legal und kostenlos
> gibt weiß ich nicht.

Legal gibt es die MISRA natürlich schon, kostenlos aber nicht.
Es kostet aber auch nicht die Welt, GBP 15,- + VAT für das PDF:

http://www.misra.org.uk/Buyonline/tabid/58/Default.aspx

Nur das Dokument bringt dir aber wenig. Es iszt kaum möglich beliebige
Quellcode händisch auf das Befolgen der Regeln zu überprüfen. Dafür
gibt es Tools wie PC-Lint und QA-C, die aber alles außer kostenlos 
sind...

von Simon W. (simon1711)


Lesenswert?

Hab ganz vergessen mich hier zu bedanken...
Ist ja doch einiges zusammen gekommen.

Also DANKE ;)

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.