- Директива #include не различает типы файлов (это просто прославленная операция копирования-вставки) - автоматического добавления .h не происходит.
- Стандартные заголовочные файлы C ++ предоставляются без расширения .h
- Иногда заголовочные файлы обратной совместимости предоставляются поставщиком с тем же именем с добавлением расширения .h
Все это связано с пространствами имен. Экземпляры .h для стандартных заголовков C ++ обычно #include надлежащий стандартный заголовок C ++ (без расширения .h) и затем выдают кучу использования (что-то вроде этого):
ФАЙЛ: iostream.h
#include <iostream>
using std::iostream;
using std::ostream;
using std::ios;
...
, тогда как файл заголовка без расширения .h не загрязняет пространство имен всеми определенными классами и типами.