www.mikrocontroller.net

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


Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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
  ...


Autor: johnny.m (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Carsten St. (carsten)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum nicht selber machen?

typedef unsigned int  UINT16
typedef unsigned long UINT32

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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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;

Autor: johnny.m (Gast)
Datum:

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

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: unsichtbarer WM-Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Besenstiele und Standarte sind wieder sehr beliebt...

Autor: Martin Kreiner (maart)
Datum:

Bewertung
0 lesenswert
nicht 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]

Autor: Firedafred (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: JojoS (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: unsichtbarer WM-Rahul = depp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KT

Autor: Μαtthias W. (matthias) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: unsichtbarer WM-Rahul (Gast) - Schön wär`s (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
KT?

Autor: Dominic R. (dominic)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Matti (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Dominic R. (dominic)
Datum:

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

Gruss,

Dominic

Autor: Firedafred (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Unbekannter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>  die Ungarische Notation gefällt mir sehr gut.

NEIN!!!!

Autor: Bernhard (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.