見にくいWindowsとLinuxのコードの共通化
同一の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のコードを分けるのではなく、ヘッダ上で分けて各々で同一の関数名を宣言しているわけだ。
そうして、コードの共通化を図っている。