"gets" wurde in C11 entfernt!?
-
Ok 100% scheint der Standard tatsächlich nicht implementiert zu sein und das da ein haufen Schrott dabei ist, will ich auch nicht bestreiten. Allerdings finde ich das man kein neues Projekt mehr mit älteren Standard als C99 anfangen sollte, einfach schon wegen stdint.h und Variablen Definition im Schleifenkopf. Und -Wall sollte nun wirklich jeder C-Programmierer kennen, der Kompiler meckert nicht umsonst.
-
uint8_t schrieb:
Ok 100% scheint der Standard tatsächlich nicht implementiert zu sein und das da ein haufen Schrott dabei ist, will ich auch nicht bestreiten. Allerdings finde ich das man kein neues Projekt mehr mit älteren Standard als C99 anfangen sollte, einfach schon wegen stdint.h und Variablen Definition im Schleifenkopf. Und -Wall sollte nun wirklich jeder C-Programmierer kennen, der Kompiler meckert nicht umsonst.
dem stimme ich prinzipiell zu, aber eigentlich ist es mir scheißegal, ob ein int 4 bytes oder mehr hat, es reicht mir, zu wissen, dass ein int mindestens 4 bytes hat.
es gibt vielleicht noch computer, bei denen der int 2 bytes ist, aber das sind so wenige, die kann man getrost vergessen.unsigned int a = 1; // oder #include <stdint.h> uint32_t a = 1;
da ist es eigentlich egal, das zweite beispiel ist lediglich mehr schreibarbeit. außerdem machen solche "pseudo-datentypen" die syntax-highlightning-funktionen von editoren kaputt.
außerdem steht in stdint.h auch nichts anderes als
typedef unsigned int uint32_t;
das weiß ich, obwohl ich den quellcode garnicht gesehen habe
C89 wird von 100% der c-compiler 100%ig unterstützt.
-
Als C-Entwickler kann man richtig neidisch auf seine C++ Kollegen sein. Bei C wird sich, so wie es aussieht, leider nicht mehr viel ändern. Ich hoffe das Gegenteil, aber das Standardkommite traut sich nichts.
-
uint8_t schrieb:
Als C-Entwickler kann man richtig neidisch auf seine C++ Kollegen sein. Bei C wird sich, so wie es aussieht, leider nicht mehr viel ändern. Ich hoffe das Gegenteil, aber das Standardkommite traut sich nichts.
naja, wenn am ende dann doch sowas wie c99 rauskommt, verzichte ich gerne auf weitere standards.
wenn man sich andere programmiersprachen so zum vergleich anschaut, dann kommt da ca. alle 10-15 jahre ein neuer standard.
c ist recht einsteigerunfreudnlich, weil man relativ viel falsch machen kann, deshalb wird es mit den jahren wohl immer weniger leute geben, die c lernen
-
C11 schrieb:
dem stimme ich prinzipiell zu, aber eigentlich ist es mir scheißegal, ob ein int 4 bytes oder mehr hat, es reicht mir, zu wissen, dass ein int mindestens 4 bytes hat.
es gibt vielleicht noch computer, bei denen der int 2 bytes ist, aber das sind so wenige, die kann man getrost vergessen.Ja aber hier versichert dir der Kompiler, dass uint32_t auch wirklich 4Bytes groß sind. Es reicht nicht immer zu wissen dass der Typ min. so groß wie x. Z.B. im Code für 8Bit Mikrocontrollern (hier AVR) wirst du größtenteils uint8_t vorfinden, int wäre hier 2Byte groß, das wäre möglicherweise eine Verschwendung von einem Byte (der größte Controller hat 4kB RAM!), was aber noch wichtiger ist eine 16Bit Berechnung dauert hier sehr viel länger als eine 8Bit Berechnung. Was ich damit sagen will ist, dass es Platformen gibt wo man wirklich wissen muss wie groß die Datentypen sind und das sind vor allem Embeddedplatformen (jetzt der Hauptbereich für C) C wurde auf dem Desktop fast vollständig von C++ abgelöst, lediglich bei absoluten low-level Zeug kann C Parade bieten. Dort geht es oft einzelne Bytes.
Du musst dir unbedingt mal Code vom Embedded- und Betriebssystembereich ansehen. Dort wirst du viel von stdint.h sehen.
Beispiel: PrettyOS http://www.c-plusplus.net/forum/252232
-
C11 schrieb:
C89 wird von 100% der c-compiler 100%ig unterstützt.
*lach*
-
Tim schrieb:
C11 schrieb:
C89 wird von 100% der c-compiler 100%ig unterstützt.
*lach*
naja, man sollte c89 als basis betrachten.