Почему заголовочные файлы STL не имеют расширения?
Я получил это основное сомнение. Заголовок STL не имеет .h
расширение.
#include <vector>
#include <map>
Есть ли какая-то конкретная причина этого? Кто-нибудь знает историю за этим, пожалуйста, поделитесь.
РЕДАКТИРОВАТЬ:
@GMan нашел ответ Майкла Берра, который обращается к этому вопросу.
1 ответ
Решение
- Директива #include не различает типы файлов (это просто прославленная операция копирования-вставки) - автоматического добавления.h не происходит.
- Стандартные заголовочные файлы C++ предоставляются без расширения.h
- Иногда файлы заголовков обратной совместимости предоставляются поставщиком с тем же именем с добавлением расширения.h
Все это связано с пространствами имен. Экземпляры.h для стандартных заголовков C++ обычно #include надлежащий стандартный заголовок C++ (без расширения.h) и затем выдают кучу использования (что-то вроде этого):
ФАЙЛ: iostream.h
#include <iostream>
using std::iostream;
using std::ostream;
using std::ios;
...
тогда как заголовочный файл без расширения.h не загрязняет пространство имен всеми определенными классами и типами.