VC++6です。ヘッダの定義のマクロで悩んでいます。

#define __myheader_H__
前と後ろの"__"は何で2つなんだろうか?

#define _INCLUDE_myheader_H_
という風に、最後の"_"が1つの物もあるけれどどう違うのか?

INCLUDEとmyheaderの間の"_"は本来スペースだし、myheaderとHの間の
"_"は本来.(ドット)ですが、何でもかんでも"_"になってますけど
これは何なの?

など、本も5,6冊買ったし、ネットも散々検索してるのですが
なかなか答えが見つかりません。これは一体何なのでしょうか?
どこか書いてあるサイトなり何なりありませんでしょうか?

何卒よろしこ