私は奇妙な問題に直面しています。私はsprintfまたはswprintfを使用してビルドの定義に応じて、またはunicodeなしで定義しています。私はこのように私自身の機能でこれらの機能をラップしています別のlibからswprintを呼び出すと失敗します
int mysprintf(MCHAR* str,size_t size, const MCHAR* format, ...)
{
#ifdef MYUNICODE
return swprintf(str, size, format);
#else
return snprintf(str, format);
#endif
}
これらの機能は、別のプロジェクトであるとlibとしてコンパイルされたStringクラスです。私は別のプログラムでそれを使用します。私はmysprintf()
msprintf(str,10, _M("%d,%d"),height,width);
を使用している場合今私は、文字列バッファ内のいくつかのゴミの値を取得します。しかし、プログラムから直接swprintf関数を呼び出すと、罰金がかかります。ビルドでUNICODEを定義し、関数swprintfが呼び出されますが、いくつかのガベージ値が入ります。私は間違っていることを理解していない。
おかげ アミット
マグヌスありがとう、これがコンセプトをクリアしました。 – amit
いつでも相手: – ralphtheninja
swprintf()はva_listを取っていませんが、vswprintf()は受け取りません。 – bk1e