<stddef.h>
официально является устаревшей частью C ++ (вместе с остальной частью Приложения D к стандарту C ++). Все они являются (не осуждаемыми) частями стандарта C, поэтому даже если они устарели в C ++, они практически наверняка останутся доступными практически до бесконечности.
Многие функции, которые не устарели , почти наверняка исчезнут первыми - export
уже ушел из текущего проекта C ++ 0x, и, если бы мне пришлось угадывать, я ' Я бы сказал, что спецификации исключений были гораздо более вероятными, чем Приложение D. Когда / если эти заголовки действительно устареют, это, вероятно, будет из зрелой версии предложения модулей Дэвида Вандервурда, которое может легко отобразить все заголовки устарели.
В то же время значительное количество компиляторов (особенно старых) не реализуют заголовки <c*>
точно так, как предписывает стандарт. Если вы хотите / должны написать код, который работает с ними, вы получите немало пользы, используя заголовки <*.h>
вместо заголовков <c*>
.
В конечном счете, я думаю, что заголовки <c*>
были решением в поисках проблемы. Стандарт C требует, чтобы эти заголовки только определяли имена, которые требуются - вообще никаких других, кроме имен, которые зарезервированы, например, с начальным подчеркиванием, за которым следует другое подчеркивание или заглавная буква. Зарезервированные имена (и некоторые другие) также зарезервированы в C ++, поэтому в любом случае они не могут конфликтовать с чем-либо в переносимом коде. Таким образом, все заголовки <c*>
, которые вы покупаете, - это возможность определить имя в глобальном пространстве имен, которое вступает в противоречие с существующим именем в стандартной библиотеке языка C. Это настолько впечатляюще ужасная идея, что даже не стоит задумываться над этим, поэтому с практической точки зрения вы ничего не получили.
Редактировать: Даже эта бесполезная возможность работала с небольшим количеством реальных компиляторов, так что текущие проекты улучшающего C ++ 0x разрешают заголовкам <c*>
загрязнять глобальное пространство имен в любом случае, так что даже теоретическое преимущество исчезло .