Stdint oder C Datentypen

Gast #2864463
Lesenswert?

Hallo!

Ich bin etwas unschlüssig wann ich die mit C99 eingeführten 
stdint-Datentypen verwenden soll und wann die C-Datentypen. Wie macht 
ihr das?
Z.B.: Als Schleifenzähler, verwendet ihr da int/long für max 16/32 bit 
oder uint_fast(16|32)_t.
#2864536
Lesenswert?

Da noch nicht alle Compiler (vor allem Compiler für uCs) C99 
unterstützen, benutze ich auch die neuen "Features" nicht. Ich versuche 
grundsätzlich möglichst speichersparend zu programmieren. Wenn ich 
weiss, dass meine Variable nur Werte zwischen X und Y annehmen kann, so 
wähle ich den Datentyp aus, in der der Wert gerade noch reinpasst. Beim 
PC-Programmieren ist dies jedoch weniger kritisch, da einiges mehr an 
Ressourcen verfügbar ist.

Ob du die C99 "Features" nutzt oder nicht, ist dir überlassen. Sei dir 
einfach bewusst, dass deine Programme mit einem älteren Compiler dann 
nicht funktionieren.
#2865544
Lesenswert?

da das keine "hard coded" Features sind, sondern einfach nur header mit 
Typedefs, ist es nicht schwierig diese nachzurüsten, falls sie fehlen.

Vor allem in Schnittstellen zwischen unterschiedlichen Systemen sind die 
"neuen" Typen Gold wert. Unter Umständen hat ein int auf dem einen 
System eine andere Größe als auf einem anderen.

Eigentlich braucht man bur zu wissen, was man will, dann sollte man 
immer die "neuen" Typen verwenden.

Schnittstellen: feste Typen
Typen, wo mit overflow gerechnet werden muss: feste Typen
lokale automatische Variablen: _fast Typen
interne rechenzeitkritische Strukturen: _fast Typen
interne speicherkritische Strukturen _least Typen
Zeichen u. Strings: char


edit:
bei den Interfaces die Padding Bytes nicht vergessen, also am besten ein 
pragama pack, oder whatever benutzen und die Variablereihenfolge mit 
Verstand wählen.
Moderator Persönliche Seite #2868204
Lesenswert?

Johann L. schrieb:
> Wenn der Compiler das immer noch nicht kann, dann tritt ihn in die
> Tonne.

Ach was.  Von Microsoft lernen heißt siegen lernen. :-)  Die
ignorieren meines Wissens recht standhaft alle Weiterentwicklungen
von C jenseits von C90.  Wenn Microsoft das kann, dann können andere
das natürlich auch ...

http://www.infoq.com/news/2012/05/vs_c99_support/
Gast #2868824
Lesenswert?

Vlad Tepesch schrieb:
> Johann L. schrieb:
>> Hallo? C99 gibt's jetzt seit 13 (in Worten: dreizehn) Jahren.
>> Wenn der Compiler das immer noch nicht kann, dann tritt ihn in die
>> Tonne.
>
> Dann bleiben dir aber nicht mehr viele Compiler übrig und die, die übrig
> bleiben, wirst du nicht bezahlen wollen.

Wie viel hast du für den gcc bezahlt? Solange wir hier nicht von irgend 
welchen exotischen Architekturen sprechen, gibt es eigentlich immer 
einen kostenlosen Kompiler mit C99 Unterstützung. Und der gcc ist 
wirklich nicht schlecht, der kann sich sogar mit dem MSVC messen. Clang 
kann sogar C11. Also wo ist das Problem?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren