torutkのブログ

ソフトウェア・エンジニアのブログ

Windowsでシステムヘッダーファイルのインクルード順番

Windowsでネットワーク周りのプログラムを作っていてたまに直面するのが
fd_setの二重定義コンパイルエラーです。をどちらに先にインクルードしているかで発生したりしなかったりとちょっと厄介な問題です。

現象から、より先にをインクルードしないと発生するようです。

小さなプログラムでは直接をインクルードするので比較的問題を解消しやすいです。
しかし、大きなプログラムでは直接を直接インクルードすることはなく、スーパークラスやクラスライブラリのヘッダーファイルをインクルードし、そこから間接的にインクルードするような定義となります。そのため、原因が見えずらく解決に苦労します。