Hallo Forum, manche Programmierer verwenden z.B. statt "unsigned int" einfach UINT16, um vom Prozessorkern (8-Bit, 16-Bit, Warsteiner) unabhängig zu sein. Solche und ähnliche Regeln finde ich sehr sinnvoll und würde mich gerne weiter damit beschäftigen. Weiß jemand von euch, wer das erfunden / definiert hat und wo man noch weitere sinnvolle Hinweise zum Programmierstiel findet? Viele Grüße und danke im Voraus, Bernhard
UINT16 war früher mal sehr beliebt. Das Problem war, dass jeder sein eigenes Süppchen gekocht hat und neue Begriffe eingeführt hat. Mittlerweile hat sich die Situation aber geändert. Auch das C-Normungskommitee hat ein Einsehen und hat einen Standard dafür definiert. Die entsprechenden Bezeichnungen findest du in stdint.h zb. gibt es int8_t uint8_t int16_t uint16_t ...
> ...Programmierstiel...
Ist das sowas wie ein Besenstiel, nur fürs Programmieren? Vielleicht um
den Speicher leerzufegen?
UINT16 hat möglicherweise irgendein Programmierer, der von Standards
nichts hält definiert. In C99 gibt es in der stdint.h-Bibliothek eine
Reihe von (im ANSI-C99-Standard definierten, also von einer
Normkommission abgesegneten) Typen wie uint8_t, uint16_t... Diese Typen
muss jeder C-Compiler, der von sich sagen können will, dass er den
ANSI-C99-Standard erfüllt, mit sich bringen. UINT16 entspricht nicht
diesem Standard und führt mit Sicherheit nicht zu einer
Plattformunabhängigkeit, sondern nur zur Verärgerung des Programmierers.
Warum nicht selber machen? typedef unsigned int UINT16 typedef unsigned long UINT32 (hängt vom µC u. Compiler ab)
> Warum nicht selber machen?
WEIL ES DAFÜR SEIT FAST 7 JAHREN EINEN STANDART GIBT!!!
#include <stdint.h>
int8_t bla;
uint8_t blub;
int16_t foo;
uint16_t bar;
int32_t huch;
uint32_t hach;
int64_t och;
uint64_t ach;
> (hängt vom µC u. Compiler ab)
...und den Standard gibt es genau deswegen!
@ kbucheg, johnny.m Vielen Dank für die Informationen, jetzt verstehe ich schon mehr; werde ich natürlich in Zukunft so verwenden. Gibt es noch weitere solcher Normen, z.B. Nomenklatur von Variablen mit Speicherklasse? Außerdem würden mich Tipps zur objektbasierten Programmierung sehr interessieren. @ Carsten Steiner Danke für den Tipp, so mache ich das bisher. Nur möchte ich eben keine eigene Suppe kochen, sondern eine evtl. vorhandene Normung gerne übernehmen, deshalb frage ich "wer".
> Besenstiele und Standarte sind wieder sehr beliebt...
[krümel-kackerei]
Sind sich aber in der Funktion ähnlich: Mit Besen und dem kaiserliche
Reichsbanner kann man auch sauber machen ;-)
[/krümel-kackerei]
"Gibt es noch weitere solcher Normen, z.B. Nomenklatur von Variablen mit Speicherklasse? Außerdem würden mich Tipps zur objektbasierten Programmierung sehr interessieren." Interessantes Thema. Soweit ich weiß, wird das nur innerhalb von Firmen festgelegt.
die Programmiersprache 'C' gibt es nur schon länger als seit 1999 und es war und ist auch üblich eigenen typedefs Namen in Grossbuchstaben zu geben, da war ein UINT16 also mal logischer. Aber solche Diskussionen werden schnell zu religiösen Glaubensfragen. Wenn Pakete wie WinAVR oder WinARM für den Start vorliegen dann sind die darin enthaltenen Beispiele ein gutes Muster.
Hi wobei in C rein groß geschriebene "Namen" typischerweise für Präprozessormakros stehen. Aber auch das ist nur eine Konvention an die sich nicht alle "Bibliotheksersteller" gehalten haben. Matthias
Das schöne an Standards ist, dann man sich nicht drann halten muss, siehe z.B. gcc oder IAR - beide unterstützen C99 nur teilweise. Ausserdem sagt ISO/IEC 9899:1999 + TC2: 7.18.1.1 Exact-width integer types ... 3 These types are optional. Sie sollten implementiert sein, wenn die Maschine einen entsprechenden N-bit Typen bietet, für den Standard notwendig ist es jedoch nicht. Zwar sollte jeder moderne Compiler diese Typen aufweisen, am Ende muss man aber doch sicherstellen, dass C99 und die optionalen Typen verfügbar sind. Gruss, Dominic
<span class="quoting-level-1">> Gibt es noch weitere solcher Normen, z.B. Nomenklatur von Variablen mit Speicherklasse?</span> @Bernhard: Im Prinzip legt jede groessere Firma solche Standards verbindlich fuer die eigene Entwicklung fest (an die sich die Entwickler auch manchmal halten...). Rel. beliebt ist hier die 'Ungarische Notation', die von vielen Firmen (Teile von M$) mehr oder weniger mod. angewandt wird.
Beliebt sind auch die GNU Coding standards (zumindest in der FOSS Welt): info standards oder http://www.gnu.org/prep/standards/ Gruss, Dominic
@Matti Vielen Dank für deinen Tipp, die Ungarische Notation gefällt mir sehr gut. Was du mit "(Teile von M$)" meinst weiß ich zwar nicht, aber es klingt sehr gut anwendbar. Viele Grüße, Bernhard
@ Dominic R. Daran habe ich noch gar nicht gedacht, die GNUler haben ja viel Erfahrung mit Standardisierung/Teamwork. Zwar ist davon vieles sehr allgemein gehalten, aber eine schöne Wochenendlektüre. Danke für den Link.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.