質問: 今、`C++`のマクロを自力で展開しようとしています。 そこで、"#define" を見つけたのですが、このようになっていました。 ``` #ifndef OuHolder_h #define OuHolder_h ``` このような"`#define`"は「`OuHolder_h`が定義されている」ということを表すようなのですが、 これをどう展開すればよいか分かりません。 どうすればいいでしょうか?
回答: 何をされようとしているのかは分かりませんが、以下は俗にインクルードガードと呼ばれるものです。説明には書かれていませんが、そのファイルの末尾に『endif』も居るはずです。 ``` #ifndef OuHolder_h #define OuHolder_h // 省略 #endif ``` まず、『ifdef』と『ifndef』は違いますので、ご注意を... 『ifndef』から『endif』内は『OuHolder_h』が定義されていなかった場合にのみ実行されます。 なので、2行目の『define』で『OuHolder_h』が定義されると、『ifndef』から『endif』内は実行されません。 これは、同じheader fileを複数ファイルから読んでいる場合に、何度も同じheader fileを読み込まないようにするためのものです。 まずは、簡単なことから理解して徐々にやりたいことを試して行くことをオススメします。