enr00
Routinier
Was ist eigentich size_t, welche Werte kann man darin speichern, und wie kann man selbst so einen Datentyp entwerfen?
Folge dem Video um zu sehen, wie unsere Website als Web-App auf dem Startbildschirm installiert werden kann.
Anmerkung: Diese Funktion erfordert derzeit den Zugriff auf die Seite über den integrierten Safari-Browser.
typedef unsigned long size_t;
Wie man eigene Datentypen definiert hat sich damit auch erledigt, oder?
typedef unsigned long size_t;
Das ist doch auch gut so, ein word ist ein 16 Bit wert, zwei Bytes.unter der C WinAPI gibt es auch sachen wie WORD etc. als Datentypen :p
egrep '^typedef .+ [a-zA-Z]+_t;$' /usr/include/* -R
Wo ist den unter Windows den /usr/include/ :-)?
so far
MFG 4k3nd0
Häh ?Ansonsten kann man eigene Datentypen eher mit structs erzeugen.
typedef ist eher dazu da um alten Datentypen neue Namen zu verpassen.
Bei einigen Dingen wie bei size_t ist dies auch okay.
Aber eigene komplexe Datentypen kann man nicht mit typedef abbilden.
Hier bräuchte man schon structs.
// vorausgesetzt char, short, long, usw. sind tatsächlich auf der Ziel Architektur so lang --> für nähere Details --> limits.h
typedef unsigned char u08;
typedef signed char s08;
typedef unsigned short u16;
typedef signed short s16;
typedef unsigned long u32;
typedef signed long s32;
typedef unsigned long long u64;
typedef signed long long s64;
// wobei hier Namen wie u08_t, s08_t, u16_t, usw. verständlicher wären...
// ist aber Geschmackssache...
u08 variableOhneVorzeichen8Bit = 217;
s08 variableMitVorzeichen8Bit = -37;
u16 variableOhneVorzeichen16Bit = 516;
// usw. ...
typedef struct str_Time
{
u08 hours;
u08 minutes;
u08 seconds;
u16 year;
} str_Time_T;
str_Time_T zeit = {08, 18, 00, 2009}
Wo ist den unter Windows den /usr/include/ :-)?
Guggst du "Start|Suchen" und suchst bspl.-weise nach der stdio.h oder so
...oder bei den Einstellungen deiner IDE...
Guggst du "Start|Suchen" und suchst bspl.-weise nach der stdio.h oder so
...oder bei den Einstellungen deiner IDE...
Auch wenn mich manche jetzt als Verräter oder Sonstiges (Troll, etc.) bezeichnen...Windows suche....? Geht nicht
$ rm -f /opt/kde3/bin/kfind
the same...Dazu Ironie /off
So geht das meiner Meinung (und meiner Referenz und meinem Kompiler) nach nicht. Du kannst nicht innerhalb eines typedef's das struct definieren. Ausserdem ist dies unnoetig. Deine str_Time_T ist (ohne das 'typedef') ein Object vom Typ struct str_Time und kein Alias darauf.Code:typedef struct str_Time { u08 hours; u08 minutes; u08 seconds; u16 year; } str_Time_T;
Öh, was genau meinst du damit?Du kannst nicht innerhalb eines typedef's das struct definieren.
typedef struct foo { ... } foo;
foo bar;
struct foo baz;
Ohne das typedef ist str_Time_T eine Variable, ja, aber mit dem typedef ist es, wer hätte das gedacht, ein typedef. Ich versteh irgendwie nicht was du uns damit sagen willst.Deine str_Time_T ist (ohne das 'typedef') ein Object vom Typ struct str_Time und kein Alias darauf.
Ok, und welche header wären das? (Abgesehen von kernel-Headern, um die es hier soweit ich das sehe nicht ging.)Wobei unter Unix/Linux Systemen auch nicht alle Header-Dateien unter /usr/include installiert werden
Ist Quatsch, sizeof(char) ist garantiert 1, aber es wird nirgendwo garantiert, dass ein byte soundsoviel bits hat. Das ist also völlig plattformabhängig und Namen wie u08 sind IMHO irreführend.Code:u08 variableOhneVorzeichen8Bit = 217;
Je nachdem was man installiert hat bzw. das Herz benötigt:Ok, und welche header wären das? (Abgesehen von kernel-Headern, um die es hier soweit ich das sehe nicht ging.)
Ist Quatsch, sizeof(char) ist garantiert 1, aber es wird nirgendwo garantiert, dass ein byte soundsoviel bits hat. Das ist also völlig plattformabhängig und Namen wie u08 sind IMHO irreführend.
Gut, vielleicht nicht verständlich formuliert..// vorausgesetzt char, short, long, usw. sind tatsächlich auf der Ziel Architektur so lang --> für nähere Details --> limits.h
typedef unsigned char u08;
[...]
// wobei hier Namen wie u08_t, s08_t, u16_t, usw. verständlicher wären...
// ist aber Geschmackssache...
Das rot markierte gefällt mir..bin auch dieser Meinung...u8/u16/u32 are perfectly fine typedefs, although they fit into category (d) better than here.
Although it would only take a short amount of time for the eyes and
brain to become accustomed to the standard types like 'uint32_t',
some people object to their use anyway.
Therefore, the Linux-specific 'u8/u16/u32/u64' types and their
signed equivalents which are identical to standard types are
permitted -- although they are not mandatory in new code of your
own.
Ja, die Info war in einer ziemlich langen Zeile (die ich zum Durchlesen scrollen hätte müssen) versteckt, außerdem in einem (auch noch C++/C99) Comment, da hab ich wohl mental abgeschaltet, sorry.Überlesen?
Durchaus, hatte ich nicht dran gedacht.Cross Platform Toolchains/SDKs aber schon.
Naja, wohl Geschmackssache. Solange ein u16 wirklich 16bit lang ist, find ichs zumindest teilweise sinnvoll. Wenn das aber nicht gewährleistet ist (kA ob das so ist, siehe vorherige Frage), würde ichs generell ablehnen.Das rot markierte gefällt mir.