Forum: PC-Programmierung Stdint oder C Datentypen


von Markus (Gast)


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.

von B. S. (bestucki)


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.

von Vlad T. (vlad_tepesch)


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.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

be stucki schrieb:
> Da noch nicht alle Compiler (vor allem Compiler für uCs) C99
> unterstützen, benutze ich auch die neuen "Features" nicht.

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.

von Rolf Magnus (Gast)


Lesenswert?

Vor allem wenn selbst schon so Sachen wie stdint.h fehlen, das 
einerseits gerade im Embedded-Bereich besonders praktisch ist und 
andererseits geradezu trivial einzubauen ist, da es nicht mal Änderungen 
am Compiler selbst benötigt, dann ist das echt ein Armutszeugnis für den 
Compiler-Hersteller.

von Jörg W. (dl8dtl) (Moderator) Benutzerseite


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/

von Vlad T. (vlad_tepesch)


Lesenswert?

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.

von Klaus W. (mfgkw)


Lesenswert?

Mit dem gcc komme ich ganz günstig über die Runden :-)

Und den Visual C++ will ich auch nicht mehr bezahlen, seit ich das 
vollkommen untaugliche VS2003 erworben habe. Günstig war das nicht.
Schon gar nicht, wenn in einer "Professional"-Version nicht mal ein 
Profiler dabei ist.

von Christopher C. (Gast)


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?

von Vlad T. (vlad_tepesch)


Lesenswert?

Christopher C. schrieb:
> Also wo ist das Problem?

das auch der gcc nicht komplett C99 unterstützt und laut gjlayde in die 
Tonne gehört

von Klaus W. (mfgkw)


Lesenswert?

Was ich bisher von C99 brauchte, hatten die halbwegs aktuellen 
gcc-Versionen immer.

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.