size_t?

Dieses Thema im Forum "C/C++" wurde erstellt von enr00, 10.07.2007.

  1. enr00

    enr00 Routinier

    Dabei seit:
    08.04.2007
    Beiträge:
    275
    Zustimmungen:
    0
    Ort:
    Luxemburg
    Was ist eigentich size_t, welche Werte kann man darin speichern, und wie kann man selbst so einen Datentyp entwerfen?
     
  2. Anzeige

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #2 smg, 10.07.2007
    Zuletzt bearbeitet: 10.07.2007
    smg

    smg Regex Fetischist

    Dabei seit:
    20.05.2007
    Beiträge:
    195
    Zustimmungen:
    0
    Ort:
    /home/stephan/
    size_t sollte nur ein typedef sein, iirc, also:
    Code:
    typedef unsigned long size_t;
     
  4. #3 Mµ*e^13.5_?¿, 10.07.2007
    Mµ*e^13.5_?¿

    Mµ*e^13.5_?¿ Routinier

    Dabei seit:
    21.02.2006
    Beiträge:
    453
    Zustimmungen:
    0
    size_t ist nach dem ANSI-C-Standard der Datentyp, in dem Längen von Strings und anderen Speicherbereichen angegeben werden sollen.
    Also für gewöhnlich wird size_t wie folgend definiert:
    typedef unsigned long size_t;
    Was du darin speichern kannst, hängt von der Architektur ab, bei mir ist er 4 Bytes lang, ich kann also darin Ganzzahlen von 0 bis 4294967295 speichern.
    Wie man eigene Datentypen definiert hat sich damit auch erledigt, oder?
     
  5. enr00

    enr00 Routinier

    Dabei seit:
    08.04.2007
    Beiträge:
    275
    Zustimmungen:
    0
    Ort:
    Luxemburg
    Thx

    Jo, thx...
     
  6. #5 oiermann, 23.03.2009
    oiermann

    oiermann besserwisser

    Dabei seit:
    03.10.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Ort:
    Leutkirch
    Wenn auch schon ein wenig älter, aber trotzdem meine Frage.

    Gibt es irgendwo Listen, in denen solche Definitionen ALLE (dem Standard entsprechend) drin sind?
     
  7. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    396
    Zustimmungen:
    0
  8. #7 oiermann, 23.03.2009
    oiermann

    oiermann besserwisser

    Dabei seit:
    03.10.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Ort:
    Leutkirch
    Ich meine nicht die Funktionen und Header Beschreibungen, sondern Sachen wie
    Code:
    typedef unsigned long size_t;
    PS: I didn't
     
  9. #8 T-Virus, 23.03.2009
    Zuletzt bearbeitet: 23.03.2009
    T-Virus

    T-Virus Free Software Fan :p

    Dabei seit:
    06.01.2009
    Beiträge:
    107
    Zustimmungen:
    0
    Ich kann bei dem Thema, als Hobbyentwickler der mit C++ angefangen hat, nur empfehlen viel Code lesen.
    Mit der Zeit kommen solche gebilde immer mal wieder :)
    Vor allem wenn man mit der C++ STL arbeitet, egal ob beruflich oder nicht, man findet bei strings viele solcher Sachen :)

    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.
    In C++ kann man diese eigentlich weglassen und gleich Klassen nutzen.
    Aber als Datentypen sind structs doch immer nützlich :)

    Anbei noch einmal zum Thema typedef.
    Ich würde dir auch empfehlen, wenn du solche typedefs im C Standard suchst, dann lies mal einige der C Header durch.
    Dort sind die ganzen typedefs passend verteilt :)

    Bzw. kann dir auch OpenGL viele typedefs bieten.
    Dort gibt es zu jedem Datentyp, egal ob int char whatever, ein typedef.
    Diese sehen dann wie GLFloat, GLDouble etc. aus.
    Kenne die jetzt nicht genau also das Beispiel nicht so ernst nehmen ^^

    Okay heir ein passendes Beispiel:
    http://www.koders.com/cpp/fid46C0152428EBEB242EBF7D3F640B0B8AFDD8FB97.aspx?s=cdef:opengl

    unter der C WinAPI gibt es auch sachen wie WORD etc. als Datentypen :p
     
  10. #9 oiermann, 23.03.2009
    oiermann

    oiermann besserwisser

    Dabei seit:
    03.10.2006
    Beiträge:
    12
    Zustimmungen:
    0
    Ort:
    Leutkirch
    Vielen Dank :)
    Naja, eine Liste soll ja das Header durchforsten abstellen ;) Aber mal sehen...
    Das ist doch auch gut so, ein word ist ein 16 Bit wert, zwei Bytes.
     
  11. #10 Gott_in_schwarz, 23.03.2009
    Gott_in_schwarz

    Gott_in_schwarz ar0

    Dabei seit:
    22.04.2007
    Beiträge:
    546
    Zustimmungen:
    0
    Ort:
    Niedersachsen
    Code:
    egrep '^typedef .+ [a-zA-Z]+_t;$' /usr/include/* -R
     
  12. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    396
    Zustimmungen:
    0
    Wo ist den unter Windows den /usr/include/ :-)?

    so far
    MFG 4k3nd0
     
  13. daboss

    daboss Keine Macht für niemand!

    Dabei seit:
    05.01.2007
    Beiträge:
    1.294
    Zustimmungen:
    0
    Ort:
    sydney.australia.world
    Guggst du "Start|Suchen" und suchst bspl.-weise nach der stdio.h oder so :P
    ...oder bei den Einstellungen deiner IDE...
     
  14. Krotti

    Krotti Foren As

    Dabei seit:
    01.03.2007
    Beiträge:
    78
    Zustimmungen:
    0
    Off Topic

    Häh ?

    Alter Datentyp == Basisdatentyp...wieso alt ?
    (Nur) Bei einigen Dingen...?

    Beispiel: Definition
    Code:
    // 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...
    (So ähnliche Definitionen befinden sich zum Beispiel in stdint.h.)
    Ich brauch anschließend nicht mehr unsigned char [varName] schreiben. u08 [varName] reicht. :)

    Beispiel: Anwendung
    Code:
    u08 variableOhneVorzeichen8Bit = 217;
    s08 variableMitVorzeichen8Bit = -37;
    u16 variableOhneVorzeichen16Bit = 516;
    // usw. ...
    Imho recht nützlich wenn der verwendete Editor keine Autovervollständigung (IntelliSense...so nennt es MS) kann.

    typedef funktioniert auch bei Strukturen, Unions, Klassen (C++)...
    Beispiel: Definition
    Code:
    typedef struct str_Time
    {
    	
       u08 hours;
       u08 minutes;
       u08 seconds;		
       u16 year;
    
    } str_Time_T;
    Beispiel: Anwendung
    Code:
    str_Time_T zeit = {08, 18, 00, 2009}
    Cool oder ? ;)

    Zusammenfassend:
    Typdef ist eine nette Funktion mit der ich fauler Programmierer mir die Schreibarbeit verkürzen kann... :D

    Hat aber imho auch Schattenseiten...der Code könnte für Andere dadurch schwerer zu lesen/verstehen sein...deswegen wahrscheinlich oiermanns Frage...

    Ich würde eher fragen: "Ist egrep standardmäßig bei Windows installiert ?" ;)
    Wobei unter Unix/Linux Systemen auch nicht alle Header-Dateien unter /usr/include installiert werden...

    :)
     
  15. Anzeige

    Vielleicht findest du HIER Antworten.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  16. Akendo

    Akendo 4k3nd0

    Dabei seit:
    05.02.2008
    Beiträge:
    396
    Zustimmungen:
    0
    Windows suche....? Geht nicht :P
    Dazu Ironie /off
     
  17. #15 Krotti, 24.03.2009
    Zuletzt bearbeitet: 24.03.2009
    Krotti

    Krotti Foren As

    Dabei seit:
    01.03.2007
    Beiträge:
    78
    Zustimmungen:
    0
    Off Topic

    Auch wenn mich manche jetzt als Verräter oder Sonstiges (Troll, etc.) bezeichnen...

    Nicht falsch verstehen:

    Ich benutze sehr gerne Unix/Linux Systeme. Ich werde höchstwahrscheinlich auch nie wieder ein Windows System als Hauptbetriebssystem verwenden...
    Aber hier muss ich Windows (zumindestens die Win XP Suchfunktion) verteidigen:

    Gilt für kfind (KDE 3.5.9, höhere Versionen -> kA...noch nicht verwendet):

    Wenn ich diese Variante von kfind mit der Windows Suchfunktion vergleiche, hilft nur folgendes :devil::
    Code:
    $ rm -f /opt/kde3/bin/kfind
    Klingt zwar hart, aber ich kann prinzipiell keine Programme leiden, bei der die Benutzeroberfläche sehr oft eine längere Zeit (>1 Minute) einfriert.
    Tritt auf wenn man das komplette Dateisystem (file:///) durchsucht, nach einer gewissen Zeit auf Anhalten klickt und danach das Programm schließen will.
    Es geht zwar das Programm schneller zu beenden (CTRL + ALT + ESC oder "killall kfind")...ist aber nicht wirklich sauber..

    Naja, mal sehen ob die höheren Versionen besser sind...falls nicht, versuch ich kfind halt mal selber optimieren...sofern ich halt Zeit habe...
    Derweil verwende ich halt weiterhin find, etc...

    the same...
     
Thema: size_t?
Besucher kamen mit folgenden Suchen
  1. size_t

    ,
  2. size_t c deutsch