mikrocontroller.net

Forum: Compiler & IDEs typ: "size_t"


Autor: Re To (toobatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
in dem manual zur avr-libc find ich  ab und zu den typ "size_t"   was 
soll das sein  ?

Autor: 123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du kannst google bedienen?

Autor: Re To (toobatch)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie groß (byte) ist solch eine variable im gcc

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Such mal auf deiner Platte nach *.h mit Inhalt size_t.
Evtl. findest du stddef.h, und da könnte size_t definiert sein...

Oh, Mann, aber echt.

Autor: risu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Lothar,

wenn's denn bloß so einfach wäre. Zeig uns doch bitte mal, wo genau Du 
in "stddef.h" ein "typedef ?? ?? size_t" findest. Es ist sicher nicht 
leicht, dort durch alle "ifdefs" (
_SIZE_T_DECLARED, _SIZE_T_DEFINED,
_SIZE_T_DEFINED_ 
 usw.!)zu steigen und das Gesuchte zu finden.

Aus http://www.nongnu.org/avr-libc/user-manual/group__... 
geht aber durch

#define SIZE_MAX   (__CONCAT(INT16_MAX, U))
//largest value a size_t can hold.

hervor, dass die Antwort wohl "uint16_t" ist.

Gruß
 risu

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> wie groß (byte) ist solch eine variable im gcc
Na gut, wenn das Zeug so versteckt ist,
wie wärs mit dem pragmatischen Ansatz:
   int s = sizeof(size_t);

Woanders hatte ich z.B. sowas gefunden:
#ifndef  _SIZE_T_DEF
typedef  unsigned int  size_t;
#define _SIZE_T_DEF
Aber da war die Zielarchitektur auch fest vorgegeben....

Autor: A. K. (prx)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Solche Präprozessor-Wüsten lassen sich leicht ausdünnen: mal "gcc -E" 
laufen lassen.

Autor: Hans (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ISO/IEC 9899:1999

7.17 Common definitions <stddef.h>

The types are
....
size_t
which is the unsigned integer type of the result of the sizeof operator;
....

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wobei gerade der "unsigned integer type" doch ein wenig von der 
Zielplattform abhängig ist. Beim x86 ist   sizeof(size_t) == 4;

Autor: Chris (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man für die AMD64-Architektur kompiliert, ist häufig sizeof(int) == 
4, aber sizeof(size_t) == 8.
Deswegen sollte man immer den geeigneten Typ verwenden und nicht 
"unsigned int" schreiben, wenn man "size_t" meint.

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
size_t wird von praktisch allen Funktionen der Standardbibliothek
benutzt, die irgendwas mit der Größe eines Objekts zu tun haben.
Das Ergebnis des sizeof-Operators ist von diesem Typ, das Argument
von malloc hat diesen Typ, etc. pp.  Da zu jeder dieser Funktionen
auch eine Headerdatei gehört, die man ohnehin mit aufnehmen muss
(um den korrekten Funktionsprototypen zu erhalten), darf man einfach
davon ausgehen, dass diese Datei auch auf irgendeine Weise in der
Lage ist, die Typdefinition für size_t heranzuschaffen.

All die Verrenkungen in den Headers sind einfach nur dafür da, dass
der Typ zwar definiert wird, wenn er benötigt wird, aber nie versucht
wird, ihn zweimal zu definieren (was ein Fehler wäre).

Autor: Xenu (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hier noch ein interessanter Artikel zum Thema "size_t":

http://www.embedded.com/columns/programmingpointer...

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.