これはおそらく非常にばかげた質問ですが、確認する必要があります。たとえば、ヘッダーファイルでクラス宣言が与えられました。
#ifndef file_H
#define file_H
class ex{
private:
public:
};
#endif
メソッド定義を同じファイルに書き込む必要がありましたが、これを行いました。私の質問は、「#endif」がクラス宣言の直後にあるのか、それともファイルの最後にあるのかということです。クラスメソッド定義?.
これはおそらく非常にばかげた質問ですが、確認する必要があります。たとえば、ヘッダーファイルでクラス宣言が与えられました。
#ifndef file_H
#define file_H
class ex{
private:
public:
};
#endif
メソッド定義を同じファイルに書き込む必要がありましたが、これを行いました。私の質問は、「#endif」がクラス宣言の直後にあるのか、それともファイルの最後にあるのかということです。クラスメソッド定義?.
ファイルの最後。
この#ifndef
パターンのこの形式の目的は、コンパイル単位で同じ宣言または定義が 2 回出現する状況を防ぐことです。
これは、C ファイルに複数の H ファイルが含まれている可能性があり、チェーンのどこかに同じファイルが含まれている可能性があるためです。これらを使用せずにプリプロセッサを実行しただけでは、H ファイルの複数のコピーが作成されます。このように、複数のコピーがありますが、プリプロセッサは最初の遭遇以降はすべて無視します。
複数回定義することは想定されていないため、メソッド定義をヘッダー ファイルに配置する必要がある場合は、それらを#endif
.