C でのヘッダー ファイルの再定義 : 複数のインクルードの防止
複数のヘッダー ファイルのインクルードを回避する 1 つの方法は、#pragma Once ディレクティブを使用することです。質問で述べたように。ただし、winsock2.h などの特定のヘッダー ファイルは、複数回インクルードすると再定義エラーが発生する可能性があります。
この問題を解決するには、winsock2.h が windows.h の後にインクルードされるように、プロジェクト内のインクルード順序を並べ替えます。 。あるいは、windows.h をインクルードする前に _WINSOCKAPI_ マクロを定義します。これにより、windows.h がwinsock.h を自動的にインクルードすることがなくなり、再定義エラーが防止されます。
修正されたコードの例を次に示します。
#define _WINSOCKAPI_ #include <windows.h> #include "MyClass.h" // Which includes <winsock2.h>
一般的には、次のことが推奨されます。 #pragma Once をサポートしていない可能性がある古いコンパイラとの互換性を確保するため、#pragma Once の代わりにヘッダー ガードを使用します。
例は次のとおりです。ヘッダー ガードの:
#ifndef MYCLASS_H #define MYCLASS_H #include <winsock2.h> class MyClass { // ... }; #endif // MYCLASS_H
ヘッダー ガードまたは _WINSOCKAPI_ マクロを使用すると、複数のヘッダー ファイルのインクルードに関連する再定義エラーを防ぎ、クリーンでエラーのないコンパイルを保証できます。
以上がC ヘッダー ファイルでの複数のインクルード エラーを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。