2009-05-23 11 views
8

Mam podstawową wątpliwość. Nagłówek STL nie ma rozszerzenia .h.dlaczego pliki nagłówkowe STL nie mają rozszerzenia?

#include <vector> 
#include <map> 

Czy jest jakaś konkretna przyczyna tego? Każdy zna historię za tym, proszę podziel się.

EDIT:

@GMan znaleźć Michael Burr's answer który rozwiązuje tę kwestię.

+3

Duplikat: http://stackoverflow.com/questions/441568/when-can-you-omit-the-file-extension-in-an-include-directive – GManNickG

+0

Dzięki @GMan. Moje wyszukiwania w SO i Google nie ujawniły tego. Jest tak dlatego, że powiązane pytanie jest nieco inne. W każdym razie uważam, że odpowiedź Michaela Burra dotyczy mojego pytania. –

Odpowiedz

8
  • dyrektywa #include nie dyskryminuje typów plików (to tylko uwielbiony operacji kopiuj-wklej) - nie automatyczne dodawanie .h się dzieje. standardowe pliki nagłówkowe
  • C++ są dostarczane bez rozszerzenia .h
  • Czasami tyłu pliki nagłówkowe zgodność dostarczonych przez producenta o tej samej nazwie z rozszerzeniem .h dodaje

To wszystko ma do czynienia z przestrzeniami nazw . W .h odpowiedniki dla C++ standardowych nagłówków zwykle właczoną prawidłowego C++ standardowy nagłówek (bez rozszerzenia .h) i następnie wystawia kilka użyciu (coś takiego):

Plik: iostream

#include <iostream> 

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

natomiast plik nagłówkowy bez rozszerzenia .h nie powoduje zanieczyszczania przestrzeni nazw wszystkimi zdefiniowanymi klasami i typami.

+3

iostream.h istnieje? Używam C++ przez 8 lat i nigdy nie myślałem o tym ... – Calmarius

Powiązane problemy