title: in C++ , what's so special about "_MOVE_H"?
body: <p>I have a C++ file like this</p>
  
  <pre><code>#ifndef _MOVE_H
  #define _MOVE_H
  
  class Move {
      int x, y;
  public:
      Move(int initX = 0, int initY = 0) : x(initX), y(initY) {}
      int getX() { return x; }
      void setX(int newX) { x = newX; }
      int getY() { return y; }
      void setY(int newY) { y = newY; }
  };
  
  #endif
  </code></pre>
  
  <p>And to my amazement, all the code between <code>#ifndef</code> and <code>#endif</code> is simply ignored by the compiler (I swear that I am not defining <code>_MOVE_H</code> anywhere else), and I have all kinds of errors about missing definitions. I was thinking that I did something wrong, but when I try to use another key (like <code>_MOVE_Ha</code>, everything is back to normal. Does <code>_MOVE_H</code> mean something special in C++ ?</p>
  
  <p>I'm running Ubuntu 10.04, GCC 4.4.3, if that matters.</p>
  
  <p>Thanks,</p>