2010-03-30 5 views
3

Est-ce que size_t seulement en standard C++ ou en standard C?Est-ce que size_t seulement en standard C++ ou C standard?

Je ne trouve pas d'en-tête C dans l'arborescence "/ usr/include" qui définit size_t.

Si ce n'est pas le cas, est-ce que GCC fait un peu de magie pour que ça marche?

Merci, Chenz

+1

Pourquoi pensez-vous que cela devrait être dans/usr/include? –

+0

Neil a raison, vous le regardez au mauvais endroit. Les en-têtes C++ se trouvent dans/usr/include/C++/$ {gcc-version} –

Répondre

4

De C99 projet:

7,17 définitions communes <stddef.h>

  1. Les types suivants et les macros sont définies dans l'en-tête standard <stddef.h>. Certains sont également définis dans d'autres en-têtes, comme indiqué dans leurs sous-paragraphes respectifs.

  2. Les types sont [- snip -]

    size_t 
    

    qui est le type entier non signé du résultat de l'opérateur sizeof; [- snip -]

+1

La partie "autres en-têtes" s'applique à 'size_t', elle est également déclarée dans' '(voir 7.20/2). – sth

5

size_t est défini à la fois <stddef.h> et <stdlib.h>

0

size_t est en stdlib.h C (ou cstdlib.h en C++).

0

Il est défini dans string.h dans ansi c.

2

size_t est de la bibliothèque standard C

Il est déclaré dans

#include <stddef.h> //For C 
#include <cstddef> //For C++ 
1

$ grep -R -P "typedef.*\s+size_t;" /usr/include/ 2> /dev/null

vous donnera une liste des fichiers qui définissent size_t