Forum: Mikrocontroller und Digitale Elektronik Wer hat UINT16 u.ä. definiert?


von Bernhard (Gast)


Lesenswert?

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

von Karl heinz B. (kbucheg)


Lesenswert?

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
  ...


von johnny.m (Gast)


Lesenswert?

> ...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.

von Carsten S. (carsten)


Lesenswert?

Warum nicht selber machen?

typedef unsigned int  UINT16
typedef unsigned long UINT32

(hängt vom µC u. Compiler ab)

von Unbekannter (Gast)


Lesenswert?

> 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;

von johnny.m (Gast)


Lesenswert?

> (hängt vom µC u. Compiler ab)
...und den Standard gibt es genau deswegen!

von Bernhard (Gast)


Lesenswert?

@ 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".

von unsichtbarer WM-Rahul (Gast)


Lesenswert?

Besenstiele und Standarte sind wieder sehr beliebt...

von Martin K. (maart)


Lesenswert?

> 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]

von Firedafred (Gast)


Lesenswert?

"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.

von JojoS (Gast)


Lesenswert?

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.

von unsichtbarer WM-Rahul = depp (Gast)


Lesenswert?

KT

von Μαtthias W. (matthias) Benutzerseite


Lesenswert?

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

von unsichtbarer WM-Rahul (Gast) - Schön wär`s (Gast)


Lesenswert?

KT?

von Dominic R. (dominic)


Lesenswert?

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

von Matti (Gast)


Lesenswert?

<span class="quoting-level-1">&gt; 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.

von Dominic R. (dominic)


Lesenswert?

Beliebt sind auch die GNU Coding standards (zumindest in der FOSS Welt):
info standards
oder
http://www.gnu.org/prep/standards/

Gruss,

Dominic

von Firedafred (Gast)


Lesenswert?

@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

von Unbekannter (Gast)


Lesenswert?

>  die Ungarische Notation gefällt mir sehr gut.

NEIN!!!!

von Bernhard (Gast)


Lesenswert?

@ 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
Noch kein Account? Hier anmelden.