5

これはおそらく非常にばかげた質問ですが、確認する必要があります。たとえば、ヘッダーファイルでクラス宣言が与えられました。

#ifndef file_H
#define file_H

class ex{
private:

public:
};

#endif

メソッド定義を同じファイルに書き込む必要がありましたが、これを行いました。私の質問は、「#endif」がクラス宣言の直後にあるのか、それともファイルの最後にあるのかということです。クラスメソッド定義?.

4

1 に答える 1

6

ファイルの最後。

この#ifndefパターンのこの形式の目的は、コンパイル単位で同じ宣言または定義が 2 回出現する状況を防ぐことです。

これは、C ファイルに複数の H ファイルが含まれている可能性があり、チェーンのどこかに同じファイルが含まれている可能性があるためです。これらを使用せずにプリプロセッサを実行しただけでは、H ファイルの複数のコピーが作成されます。このように、複数のコピーがありますが、プリプロセッサは最初の遭遇以降はすべて無視します。

複数回定義することは想定されていないため、メソッド定義をヘッダー ファイルに配置する必要がある場合は、それらを#endif.

于 2010-05-16T04:13:21.517 に答える