1

このことを考慮:

#ifndef GUARD_H
#define GUARD_H
...
#endif GUARD_H

それよりも:

#ifndef GUARD_H
#define GUARD_H
...
#endif // GUARD_H

多くの場合#endif、「識別子」がコメントアウトされているのを目にしますが、コメントしなくても機能します。

無視された後のすべて#endifですか...?

4

1 に答える 1

11

いいえ、これは有効なC++ではありません。形式が正しくありません。# endifと改行の間に、前処理ディレクティブ行を終了するトークンを含めることはできません。

#ifディレクティブから条件を言い換えたい場合は、コメントでそれを行うことができます。

#endif // GUARD_H

ただし、これは、特にインクルージョンガードの場合、実際には冗長です。ヘッダーファイルの最後の場合は、複数のインクルードを防ぐために、上部 #endifの使用を終了することがほぼ確実にあります。#ifdef

条件付きディレクティブのネストされたレベルが複数ある場合は、これ役立つ場合がありますが、それでも、コードをリファクタリングして、コードをより単純またはより単純にすることが望ましい場合がよくあります。

于 2011-02-17T15:25:45.890 に答える