Является ли size_t только стандартом C ++ или стандартом C? - PullRequest
3 голосов
/ 30 марта 2010

size_t только в стандарте C ++ или в стандарте C?

Я не могу найти заголовок C в дереве "/ usr / include", которое определяет size_t.

Если его нет в C std, GCC просто делает что-то волшебное, чтобы заставить вещи работать?

Спасибо, Chenz

Ответы [ 6 ]

5 голосов
/ 30 марта 2010

size_t определяется как <stddef.h>, так и <stdlib.h>

4 голосов
/ 30 марта 2010

С C99 осадка:

7,17 Общие определения <stddef.h>

  1. Следующие типы и макросы определены в стандартном заголовке <stddef.h>. Немного также определены в других заголовках, как указано в соответствующих подпунктах.

  2. Типы: [- snip -]

    size_t
    

    - целочисленный тип без знака результата оператора sizeof; [- чик -]

2 голосов
/ 30 марта 2010

size_t из стандартной библиотеки C

Объявлен в

#include <stddef.h>  //For C
#include <cstddef>   //For C++
1 голос
/ 04 марта 2012

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

выдаст вам список файлов, которые определяют size_t

0 голосов
/ 30 марта 2010

Это определено в string.h в ANSI C.

0 голосов
/ 30 марта 2010

size_t находится в stdlib.h для C (или cstdlib.h в C ++).

...