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?
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;
@ 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.
@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.