私が書いた
#ifndef Header1.h
#define Header1.h
class Complex
{
   [...]
};
#endif
私のプロジェクト (Visual Studio 2010) でエラー C2008: '.' が表示されます。: マクロ定義では予期されていません。「Header1.h」の何が問題なのか、どう直せばいいのかわからない。
を使用しないでください。代わりに _ を使用してください
#ifndef HEADER1_H
#define HEADER1_H
class Complex
{
   [...]
};
#endif
    ここで識別子を使用する必要があります。
#ifndef Header1.h
        ^^^^^^^^^
それらはそれらに含めることができません.。これは、ドラフト C++ 標準セクションの16 前処理ディレクティブの段落1からわかります。これには、次の文法が含まれています。
# ifdef identifier new-line groupopt
        ^^^^^^^^^^
# ifndef identifier new-line groupopt
         ^^^^^^^^^^
通常、ガードにはすべて大文字とアンダースコアが含まれます。
 #ifndef HEADER1_H
    マクロ名にピリオドを含めることはできません。Header1またはに名前を変更しHeader1hます。
余談ですが、ほとんどのマクロは ALL_UPPERCASE が標準です。
マクロ名にドットを含めないでください。使った方がいい
#ifndef HEADER1_H
#define HEADER1_H
...
#endif