Почему заголовочные файлы 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 не загрязняет пространство имен всеми определенными классами и типами.

Другие вопросы по тегам