このことを考慮:
#ifndef GUARD_H
#define GUARD_H
...
#endif GUARD_H
それよりも:
#ifndef GUARD_H
#define GUARD_H
...
#endif // GUARD_H
多くの場合#endif
、「識別子」がコメントアウトされているのを目にしますが、コメントしなくても機能します。
無視された後のすべて#endif
ですか...?
このことを考慮:
#ifndef GUARD_H
#define GUARD_H
...
#endif GUARD_H
それよりも:
#ifndef GUARD_H
#define GUARD_H
...
#endif // GUARD_H
多くの場合#endif
、「識別子」がコメントアウトされているのを目にしますが、コメントしなくても機能します。
無視された後のすべて#endif
ですか...?
いいえ、これは有効なC++ではありません。形式が正しくありません。# endif
と改行の間に、前処理ディレクティブ行を終了するトークンを含めることはできません。
#if
ディレクティブから条件を言い換えたい場合は、コメントでそれを行うことができます。
#endif // GUARD_H
ただし、これは、特にインクルージョンガードの場合、実際には冗長です。ヘッダーファイルの最後の場合は、複数のインクルードを防ぐために、上部 #endif
の使用を終了することがほぼ確実にあります。#ifdef
条件付きディレクティブのネストされたレベルが複数ある場合は、これが役立つ場合がありますが、それでも、コードをリファクタリングして、コードをより単純またはより単純にすることが望ましい場合がよくあります。