UCharの衝突

PHP6で、他のライブラリで定義しているUChar型と、鬼車のUCharの定義が衝突して困るというメールを先週受け取った。これと同様のメールを、一年半前に別の人から貰ったことがある。このときはPHP5.0で、別のライブラリというのはICUのこと。
そのときには、oniguruma.hの中でUCharを定義していた部分を以下のように書き換えて対処した。

#ifndef ONIG_ESCAPE_UCHAR_COLLISION
#define UChar OnigUChar
#endif

typedef unsigned char  OnigUChar;

つまり、今まで鬼車を使用していたアプリケーションではONIG_ESCAPE_UCHAR_COLLISIONというものは定義していないので、今までと同様にUCharという名前を使用できるし、鬼車のUCharを避けたければ、oniguruma.hをインクルードする前でONIG_ESCAPE_UCHAR_COLLISIONを定義すればよい。