in dem manual zur avr-libc find ich ab und zu den typ "size_t" was soll das sein ?
Gast
#1024613
Du kannst google bedienen?
wie groß (byte) ist solch eine variable im gcc
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.
Gast
#1024700
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" (
1 | |
2 | |
usw.!)zu steigen und das Gesuchte zu finden. Aus http://www.nongnu.org/avr-libc/user-manual/group__avr__stdint.html 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
> wie groß (byte) ist solch eine variable im gcc
Na gut, wenn das Zeug so versteckt ist,
wie wärs mit dem pragmatischen Ansatz:1 | |
Woanders hatte ich z.B. sowas gefunden:
1 | |
2 | |
3 | |
Aber da war die Zielarchitektur auch fest vorgegeben....
Solche Präprozessor-Wüsten lassen sich leicht ausdünnen: mal "gcc -E" laufen lassen.
Gast
#1024772
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; ....
Wobei gerade der "unsigned integer type" doch ein wenig von der Zielplattform abhängig ist. Beim x86 ist sizeof(size_t) == 4;
Gast
#1025257
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.
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).
Gast
#1025568
Hier noch ein interessanter Artikel zum Thema "size_t": http://www.embedded.com/columns/programmingpointers/200900195
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.