почему заголовочные файлы STL не имеют расширения? - PullRequest
11 голосов
/ 23 мая 2009

У меня есть это основное сомнение. Заголовок STL не имеет расширения .h.

#include <vector>
#include <map>

Есть ли какая-то конкретная причина этого? Кто-нибудь знает историю этого, пожалуйста, поделитесь.

EDIT

@ GMan найден ответ Майкла Берра который отвечает на этот вопрос.

1 Ответ

10 голосов
/ 23 мая 2009
  • Директива #include не различает типы файлов (это просто прославленная операция копирования-вставки) - автоматического добавления .h не происходит.
  • Стандартные заголовочные файлы C ++ предоставляются без расширения .h
  • Иногда заголовочные файлы обратной совместимости предоставляются поставщиком с тем же именем с добавлением расширения .h

Все это связано с пространствами имен. Экземпляры .h для стандартных заголовков C ++ обычно #include надлежащий стандартный заголовок C ++ (без расширения .h) и затем выдают кучу использования (что-то вроде этого):

ФАЙЛ: iostream.h

#include <iostream>

using std::iostream;
using std::ostream;
using std::ios;
...

, тогда как файл заголовка без расширения .h не загрязняет пространство имен всеми определенными классами и типами.

...