En C, es tradición nombrar a los ficheros de cabecera (que
contienen las declaraciones) con una extensión
.h
y a los ficheros de implementación (que
generan alojamiento en memoria y código) con una extensión
.c
. C++ supuso una evolución. Primero fue
desarrollado en Unix, donde el sistema operativo distingue entre
mayúsculas y minúsculas para nombres de ficheros. Los nombres
originales para los ficheros simplemente se pusieron en mayúscula:
.H
y .C
. Esto, por
supuesto, no funcionaba en sistemas operativos que no distinguen
entre mayúsculas y minúsculas como DOS. Los vendedores de C++ para
DOS usaban extensiones hxx
y
cxx
, o hpp
y
cpp
. Después, alguien se dio cuenta que la
única razón por la que se puede necesitar un extensión diferente
es que el compilador no puede determinar si debe compilarlo como C
o C++. Como el compilador nunca compila ficheros de cabecera
directamente, sólo el fichero de implementación necesita una
distinción. Ahora, en prácticamente todos los sistemas, la
costumbre es usar cpp
para los ficheros de
implementación y .h
para los ficheros de
cabecera. Fíjese que cuando se incluye un fichero de cabecera C++,
se usa la opción de no poner extensión al nombre del fichero, por
ejemplo: #include <iostream>