I wonder why the name after the #ifndef directive is always all caps and don\'t seem to match the name of the actual header file? What are the rules surrounding
#ifndef
These are preprocessor symbols and have no such rules. (as long as they match the #defines in the headers)
#defines
However, convention is to use all-caps for preprocessor symbols.