著作一覧 |
int _vsnprintf_l( char *buffer, size_t count, const char *format, locale_t locale, va_list argptr );
いや、まあ、処理系依存を示す_が付いているけどさぁ。
で、こんだ適当なmanを開く。
int vsnprintf_l(char * restrict str, size_t size, locale_t loc, const char * restrict format, va_list ap);
そして、locale_tの位置を見比べて、なんでこんなことが起きたのかを想像してみる。
追記:NOZAKIさんが想像してくれた。ありがとうございます。
* snprintf → snprintf_lと修正する際、va_start(3)の引数が変わらんよにしたMacOS X
* 新しく追加する引数locale_t必ず最後にするちゅー原則を守ったMSVC
ああ、なるほど。後者はva_startの引数が変わりますね。前者を実装するのは誰になるかわからないけど、後者はMS自身=ライブラリ提供者側の修正で済むから、というのもあるかも。
ジェズイットを見習え |