title: Preprocessor directive: Why Identifier for header file with #define is not same as header file name
body: <p>Why inside myheader.h, we write:</p>
  
  <pre><code>#ifndef MYHEADER_H
  #define MYHEADER_H
  ...
  #endif
  </code></pre>
  
  <p>Since, Identifiers are case-sensitive (lowercase and uppercase letters are distinct), and every character is significant. How the above is valid? It should be </p>
  
  <pre><code>#ifndef myheader.h
  #define myheader.h
  ...
  #endif
  </code></pre>
  
  <p>What is the purpose of the underscores? What if I have 2 separate header files with names: MyHeader.h and myheader.h, How does the preprocessor distinguish between these?</p>