ふるお〜と!- FullAuto

AI・ロボットが普及しBI(ベーシックインカム)が早急に実現されることを願う元ニートのブログ

ふるお〜と!-FullAuto

見にくいWindowsとLinuxのコードの共通化

同一のAPIを提供するにあたって、WindowsLinuxを別々に作成するのはめんどくさいし、工数もかかる。
というわけで、WindowsLinuxのコードを共通化して開発工数を削減しよう。

そうして出来上がっていたのはこんな感じのコードである。

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はなるべくヘッダーのみに適用している。

つまり、関数内でWindowsLinuxのコードを分けるのではなく、ヘッダ上で分けて各々で同一の関数名を宣言しているわけだ。
そうして、コードの共通化を図っている。