(i) Look for hash defines in the header files which are included in this header file. You might find that PROG_SPEC is some hash define. So at the time or pre-processing it might be replaced by something such that finally there is one one Class Name.
(ii) Are you dong some specialized compilation and including some special packages.
for example in QT we do use special constructs in the class definitions which have no meaning according to C++ standards, but are specific to QT. The first pass of the compilation process is to use QT utility to generate further complicated C++ code from these files. In this process it uses these different constructs and generates the additional code based on this. The newly generated C++ code is then fed to the actual C++ compiler.