In
C, it has been traditional to name header files (containing declarations) with
an extension of
.h
and implementation files (that cause storage to be allocated and code to be
generated) with an extension of
.c.
C++ went through an evolution. It was first developed on Unix, where the
operating system was aware of upper and lower case in file names. The original
file names were simply capitalized versions of the C extensions:
.H
and
.C.
This of course didn’t work for operating systems that didn’t
distinguish upper and lower case, like DOS. DOS C++ vendors used extensions of
.hxx
and
.cxx
for header files and implementation files, respectively, or
.hpp
and
.cpp.
Later, someone figured out that the only reason you needed a different
extension for a file was so the compiler could determine whether to compile it
as a C or C++ file. Because the compiler never compiled header files directly,
only the implementation file extension needed to be changed. The custom,
virtually across all systems, has now become to use
.cpp
for implementation files and
.h
for header files.