只今、メルマガ向けのSocketプログラミングをしているところですが(UNIX版は終了)、同じソースで条件分けする際にヘッダーファイルで定義しないとダメのかなと思っていたら、コンパイラ自身である程度定義が入っているとネット上の情報で発見。実際はコンパイル時に必ず読み込まれるヘッダー辺りにも書いていると思いますが、その内容の今回使用する部分を抜粋。
GCC(UNIX系)の場合
#define __GNUC__
Windowsの場合
#define _WIN32
つまり、ヘッダーファイルの名前が違うとか、ライブラリ関数の差異を埋めるためには、
#ifdef __GNUC__
// ここにUNIX版の処理を記述
#endif
#ifdef
// ここにWindows版の処理を記述
#endif
このようにすればOK
参考:Hey! Java Programming! –移植性–http://www.mars.dti.ne.jp/~torao/program/general/portability.html