Подтвердить что ты не робот

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

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

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

Источник

Ответ 3

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

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