Начиная с возраста C, большинство заголовков имеют расширение, обычно равное .h
, и они напрямую соответствуют файлам в системе. В C ++ стандарт явно определяет определенные библиотечные компоненты как имеющие директивы include, не включающие в себя никаких расширений, например <unordered_map>
. Эти библиотечные включения даже не обязаны соответствовать файлу, просто они предоставляют требуемый интерфейс, когда включены. Напротив, mysql.h
и stdio.h
и реальные файлы, которые должны быть включены под точным именем.
В случае stdio.h
библиотека C ++ определяет include <cstdio>
, который включает в себя все функции C stdio.h
, но помещает их в пространство имен std
вместо global (что было единственным вариантом в C) .