同一のAPIを提供するにあたって、WindowsとLinuxを別々に作成するのはめんどくさいし、工数もかかる。
というわけで、WindowsとLinuxのコードを共通化して開発工数を削減しよう。
そうして出来上がっていたのはこんな感じのコードである。
hogeFunction() { #ifdef __linux__ //linux code #elif _WIN32 // windows code #else #ifdef __linux__ //linux code #elif _WIN32 // windows code #else #ifdef __linux__ //linux code #elif _WIN32 // windows code #else #ifdef __linux__ //linux code #elif _WIN32 // windows code #else return; }
どうしてこうなった。
きったーねー。ちょー見にくい。
オープンソースを見てみると、 ifdefはなるべくヘッダーのみに適用している。
つまり、関数内でWindowsとLinuxのコードを分けるのではなく、ヘッダ上で分けて各々で同一の関数名を宣言しているわけだ。
そうして、コードの共通化を図っている。