STLFilt

を入れてみた。

STLFilt はC++コンパイラのラッパで テンプレートに関するわかりにくいエラーメッセージをわかりやすい形に変換してくれるソフトだ。
VC++ .NETを初めとして、様々なC++ コンパイラに対応している。
また、エラーメッセージに日本語が含まれていてもちゃんと動作する。

例えば、次のようなエラーメッセージは

f:\Develop\O2Handler3\O2Lib\BGWorkMgr.cpp(140) : error C2039: 'clear' : 'mist3::StringParamEx' のメンバではありません。
        with
        [
            E=mist3::String
        ]

次のように変換される。

f:\Develop\O2Handler3\O2Lib\BGWorkMgr.cpp(140): error C2039: 'clear': 'mist3::StringParamEx' のメンバではありません。

この例からもわかるように、SLT のエラーメッセージだけではなく、あらゆるテンプレートのエラーメッセージを簡略化してくれるようだ。
複雑なテンプレートを使用すると少しのミスで、エラーメッセージが50行以上になってしまうこともあるので、便利そうだ。


少々インストールが面倒なので、その手順をメモしておこう。

0 ダウンロード
http://www.bdsoft.com/tools/stlfilt.htmlから。
1 動作環境の準備
perlをインストールしておく。
2 cl.exeの置き換え
VC++ binフォルダにある "cl.exe" を "cl2.exe"に名前変更し、STLFiltの cl.exe を代わりに置く。
3 実行ファイルの準備
STLFilt.plとSTLTask.EXEをパスの通った場所に置く。
4 設定ファイルの準備
STLTask.INI と Proxy-CL.INI をWindowsのシステムフォルダに置き、適当に編集する。両方の設定に同じような部分があるので、同じように設定する。
5 有効化
STLTask.EXE を使用してエラーメッセージの変換を有効化する。
6 /WL オプションを付ける。
VC++のプロジェクトでコンパイラオプションに/WLを追加する。