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.
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.
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.
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.
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.
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/
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.
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.
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?
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.