Windowsでネットワーク周りのプログラムを作っていてたまに直面するのが
fd_setの二重定義コンパイルエラーです。とをどちらに先にインクルードしているかで発生したりしなかったりとちょっと厄介な問題です。
現象から、より先にをインクルードしないと発生するようです。
小さなプログラムでは直接やをインクルードするので比較的問題を解消しやすいです。
しかし、大きなプログラムでは直接やを直接インクルードすることはなく、スーパークラスやクラスライブラリのヘッダーファイルをインクルードし、そこから間接的にインクルードするような定義となります。そのため、原因が見えずらく解決に苦労します。