Если я всегда включаю stddef.h, если я использую sizeof и size_t

если я использую sizeof оператор и использование size_t в моем коде сделайте я имею, обязательно должны включать stddef.h? Я не включал stddef.h, и мой код компилирует, не предупреждая и с MVS2008 и с Borland C++ BuilderX.

Большое спасибо...

29
задан codaddict 9 April 2010 в 05:30
поделиться

3 ответа

sizeof () , хотя и выглядит как вызов функции, на самом деле является оператором и частью ядра языка. Включать не нужно.

size_t определяется в различных заголовках: stddef.h , string.h , stdlib.h и stdio.h . Включение любого из них достаточно, чтобы использовать size_t в вашем коде.

33
ответ дан 28 November 2019 в 01:42
поделиться

В c определение для size_t происходит от одного из нескольких заголовков: stddef.h , stdio.h , stdlib.h , string.h , time.h или wchar.h .

Существует множество способов, которыми реализация компилятора может организовать это, но обратите внимание, что один из способов, которым не может использоваться, - это включение компилятором одного из этих заголовков за вашу спину. - это не то, что компилятору C разрешено делать (это ограничение было снято для C ++, которому разрешено включать любой из стандартных заголовков для своих собственных целей).

3
ответ дан 28 November 2019 в 01:42
поделиться

Нет, вы можете включить заголовок, который, в свою очередь, включает stddef.h

Определение size_t должно быть предоставлено для ссылающейся части кода путем включения Заголовочный файл stdlib.h . Фактически в большинстве реализаций он не определен буквально в этом файле, а вместо этого sub включает файл stddef.h как, например, стандартную библиотеку Компилятор GNU C. Прямое включение stddef.h для кода приложения полностью допустимо и, таким образом, может заменить stdlib.h в тех случаях, когда другие элементы из этого файла не требуются или не желательны.

Источник

10
ответ дан 28 November 2019 в 01:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: