Mailinglist Archive: opensuse-de (5177 mails)
| < Previous | Next > |
Re: Frage an C Programmierer
- From: Ralf Corsepius <corsepiu@xxxxxxxxxxxxxx>
- Date: 26 Jun 2003 13:41:08 +0200
- Message-id: <1056627668.13105.3098.camel@xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Am Don, 2003-06-26 um 12.08 schrieb Konrad Neitzel:
weshalb jede hard-codierte Grössenanname in Programmcode per Definition
als Programmierfehler anzusehen ist (Einer *der* weitest verbreiteten
Fehler und Portabilitätsprobleme)
In modernem Code sollte man für Typen fester Grösse statt char, short
etc. die in stdint.h definierten Typen int8_t, int16_t usw. verwenden.
(stdint.h ist neuerer POSIX-Standard und auf allen halbwegs aktuellen
POSIX-kompatiblen Systemen vorhanden).
Und wenn wir mal pedantisch sein wollen, es gibt auch Systeme auf denen
der ein oder andere "Fixed-Size"-Typ nicht vorhanden ist.
Diese sind zwar selten anzutreffen und im Linux/Unix-Umfeld ziemlich
bedeutungslos, doch es gibt sie.
Ralf
Adalbert Michelic <adalbert+list@xxxxxxxx>," schrieb:
Darüberhinaus können die Grössen sogar noch von Compiler-Flags abhängen,adalbert@pepe:/tmp > gcc -o sizeof sizeof.c
adalbert@pepe:/tmp > ./sizeof
sizeof(char) = 1
sizeof(short) = 2
sizeof(double) = 8
sizeof(long) = 4
weshalb jede hard-codierte Grössenanname in Programmcode per Definition
als Programmierfehler anzusehen ist (Einer *der* weitest verbreiteten
Fehler und Portabilitätsprobleme)
In modernem Code sollte man für Typen fester Grösse statt char, short
etc. die in stdint.h definierten Typen int8_t, int16_t usw. verwenden.
(stdint.h ist neuerer POSIX-Standard und auf allen halbwegs aktuellen
POSIX-kompatiblen Systemen vorhanden).
Und wenn wir mal pedantisch sein wollen, es gibt auch Systeme auf denen
der ein oder andere "Fixed-Size"-Typ nicht vorhanden ist.
Diese sind zwar selten anzutreffen und im Linux/Unix-Umfeld ziemlich
bedeutungslos, doch es gibt sie.
Ralf
| < Previous | Next > |