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

Почему некоторые стандартные заголовки C начинаются с "std", а другие нет?

Например, в новом стандарте C11 добавлены stdalign.h и threads.h. Почему бы не stdthreads.h или align.h? Следует ли избегать столкновений с существующими библиотеками и заголовками систем?

4b9b3361

Ответ 1

В разное время были разные причины для выбранных имен. <stdio.h> использовался как имя задолго до того, как появился стандарт C; стандартная просто стандартизованная существующая практика. Заголовок <stddef.h> был изобретением оригинального (C89) комитета; его имя было выбрано потому, что оно не использовалось. Аналогично с <stdlib.h>. Название <inttypes.h> имело существующую практику, но комитету необходимо <stdint.h> обслуживать автономные реализации. Имя <stdarg.h> было выбрано для параллельного эквивалента не-прототипа <varargs.h>. Имя <stdbool.h> не использовалось; аналогично, я думаю, <stdatomic.h>, <stdalign.h>, <stdnoreturn.h>. Префикс std в основном зарезервирован для стандарта (но я использую заголовок "stderr.h", зная, что я могу наступать на тонкий лед). Что касается того, почему <uchar.h> и <threads.h> не превзошел префикс std, я бы предположил, что некоторые из предшествующих уровней техники практически не изменились. AFAIK, Обоснование C2011 еще не завершено; он может отображать больше информации, когда она доступна.