▼ syatさん
> ANSIビルドで .ppa のマクロを実行するとエラーになる問題の対処です。
> rev1456でコミットしました。
>
> ごく小さい修正のためパッチを作らずコミットしています。
> 原因は macro/CPPA.cpp の GetDeclarations でマクロ関数の登録文を作ってますが、関数名はwchar_t文字列なのに書式文字列が%tsになっていたため登録文がおかしくなりエラーになっていました。
>
> UNICODE版ではsprintfを自前で用意してあって、
> wchar_t, WCHAR → %ls
> char, ACHAR → %hs
> TCHAR → %ts
> と引数の型によって使い分ける必要があるようです。
>
> ANSIとUNICODEで切り替わるTCHARがテスト不足になりやすく危なげ。画面まわりとか。(CViewCommanderに数匹いそう)
ANSIビルドの動作保証は基本的に無視して突っ走ってきたので、
こういう箇所はまだまだたくさんあると思います(数匹どころじゃないはずです)。すみません。。
ANSIビルド安定化への道は2通りあります。
(1) 現状のまま、%ls,%hs,%ts に気を遣いながら組んでいく。
(2) 文字列型をすべて %ls (wchat_t) に統一する。(charが必要なAPI呼び出しはラップしてwchar_tで呼べるようにしておく)
個人的には (2) を強く推奨しますが、
その決定に際して深くは突っ込みません。
#初期のUNICODE版は (2) の方針で組んでいましたが、
議論の流れがTCHAR方針に寄っていたので、途中で (1) に切り替えた経緯があります。
適宜議論するなどして良い方向を模索してください。>プロジェクトの皆様