если я использую sizeof
оператор и использование size_t
в моем коде сделайте я имею, обязательно должны включать stddef.h
? Я не включал stddef.h
, и мой код компилирует, не предупреждая и с MVS2008 и с Borland C++ BuilderX.
Большое спасибо...
sizeof ()
, хотя и выглядит как вызов функции, на самом деле является оператором и частью ядра языка. Включать не нужно.
size_t
определяется в различных заголовках: stddef.h
, string.h
, stdlib.h
и stdio.h
. Включение любого из них достаточно, чтобы использовать size_t
в вашем коде.
В c определение для size_t
происходит от одного из нескольких заголовков: stddef.h
, stdio.h
, stdlib.h
, string.h
, time.h
или wchar.h
.
Существует множество способов, которыми реализация компилятора может организовать это, но обратите внимание, что один из способов, которым не может использоваться, - это включение компилятором одного из этих заголовков за вашу спину. - это не то, что компилятору C разрешено делать (это ограничение было снято для C ++, которому разрешено включать любой из стандартных заголовков для своих собственных целей).
Нет, вы можете включить заголовок, который, в свою очередь, включает stddef.h
Определение size_t должно быть предоставлено для ссылающейся части кода путем включения Заголовочный файл stdlib.h . Фактически в большинстве реализаций он не определен буквально в этом файле, а вместо этого sub включает файл stddef.h как, например, стандартную библиотеку Компилятор GNU C. Прямое включение stddef.h для кода приложения полностью допустимо и, таким образом, может заменить stdlib.h в тех случаях, когда другие элементы из этого файла не требуются или не желательны.