ヘッダー ファイルの再定義の防止
C では、同じシンボルの複数の定義が発生した場合にヘッダー ファイルを再インクルードするとエラーが発生する可能性があります。そのようなケースの 1 つは、Windows ソケット ライブラリ (
gt;<winsock2.h><p>以下が含まれるためにエラーが発生します<pre class="brush:php;toolbar:false">MyClass.h内の
<winsock2.h>は、それ自体が他の複数のファイルに組み込まれます。これにより、<で定義されたさまざまなシンボルが再定義されます。 pre><winsock2.h>
この問題を回避するには、ヘッダー ファイルが 1 回だけインクルードされるようにするのが一般的です。これは通常、インクルード ガードを使用するか、
#pragma Once</ を使用することによって実現されます。この場合、コードは <pre class="brush:php;toolbar:false">#pragma Onceを使用します。
調べてみると、エラーはヘッダー ファイルのインクルード順序に起因することがわかります。具体的には、コードに
before
<winsock2.h>この問題を解決するには、
<winsock2.h>になるようにインクルード順序を変更する必要があります。 ;
<windows.h>の前に含まれます。あるいは、コードでプリプロセッサ シンボル WINSOCKAPI を定義することもできます。
<windows.h>をインクルードする前に。これにより、
<windows.h>が防止されます。
<winsock.h> によっても定義されている <pre class="brush:php;toolbar:false"><winsock.h></winsock.h>
以上がC にヘッダー ファイルをインクルードする場合の再定義エラーを防ぐにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。