Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

why STL header files have no extension?

Tags:

c++

standards

stl

I got this basic doubt. The STL header doesn't have .h extension.

#include <vector>
#include <map>

Is there is any specific reason behind this? Anybody knows history behind this, please share.

EDIT:

@GMan found Michael Burr's answer which addresses this question.

like image 774
aJ. Avatar asked May 23 '09 09:05

aJ.


1 Answers

  • The #include directive doesn't discriminate file types (it's just a glorified copy-paste operation) - no automatic adding of .h is happening.
  • C++ standard header files are provided without the .h extension
  • Sometimes backward compatibility header files are provided by the vendor with the same name with the .h extension added

It all has to do with namespaces. The .h counterparts for C++ standard headers usually #includes the proper C++ standard header (without .h extension) and then issues a bunch of using (something like this):

FILE: iostream.h

#include <iostream>

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

whereas the headerfile without the .h extension does not pollute the namespace with all the defined classes and types.

like image 188
Anders Hansson Avatar answered Nov 15 '22 14:11

Anders Hansson