2010年9月17日金曜日

VC2005+tvmet で意味不明のエラー

tvmetっていう行列演算ライブラリがあるんだけど,こいつをvc2005で使おうとすると,次のエラーでコンパイルできない.

C:\cygwin\usr\local\tvmet-1.7.2\include\tvmet/Matrix.h(108) : error C2219: 構文エラー : 型修飾子は '*' の後にのみ指定できます。

問題が起こっている箇所は,例えば vector.h の99行目

const_pointer _tvmet_restrict m_data;

解決方法を模索して至った結論は,コンパイルオプションに次の定義を入れること.

-D_tvmet_restrict=

前出の const_pointerの定義の中で

typedef const _tvmet_restrict HOGE_TYPE * hoge;

というふうに定義されているらしく オプションなしでは _tvmet_restictがrestrictになって
そんな予約後はないよというエラーになるらしい.
最初からそう言ってくれよと言いたいところだがVCのエラーは「型修飾子は '*' の後にのみ指定できます。」なのだ.
MSのエラーメッセージの分かりやすさはMS-DOSの時から変わってないと感じる瞬間だった.