Using the same macro name in the include guards of two different files means that the contents of one of the files will not be included in the compilation unit. The pernicious bugs caused by this accidental exclusion can be particularly difficult to track down.


== Noncompliant Code Example

----
//my_header.h
#ifndef MY_HEADER
#define MY_HEADER
...
#endif

//my_other_header.h
#ifndef MY_HEADER    // a copy-paste error?
# define MY_HEADER
...
#endif
----


== Compliant Solution

----
//my_header.h
#ifndef MY_HEADER
#define MY_HEADER
...
#endif

//my_other_header.h
#ifndef MY_OTHER_HEADER
# define MY_OTHER_HEADER
...
#endif
----

