#include で楽をしよう

こないだ (id:wata_d:20051222) の 実装を別ファイルに書いておいて、必要な箇所で include というのをやってた。 DLL のエクスポートする関数で、実装がまったく同じものを別ファイルに切り出して、それぞれの DLL の適当なところで include 。だいぶすっきり。まあ簡単な関数ばかりなのでマクロにしちゃってもいいんですが、やっぱり素のソースを置けるほうが見やすいし修正もしやすい。

こんな感じかな。

// impl.inc
__declspec(dllexport) void __stdcall hoge()
{
    impl.hoge();
}
__declspec(dllexport) void __stdcall foo()
{
    impl.foo();
}

// Dll1.cpp -> Dll1.dll
CDll1_Impl impl;
extern "C"
{
#include "impl.inc";
}

// Dll2.cpp -> dll2.dll
CDll2_Impl impl;
extern "C"
{
#include "impl.inc";
}

実際の処理は impl クラスがやると。別々に書いても大して変わらんか……。 hoge() に処理を追加したくなった時などは、 1 箇所修正するだけで済むという利点はあるし、無駄なわけでもないかな。