トップ «前の日記(2008-09-04) 最新 次の日記(2008-09-06)» 編集

日々の破片

Subscribe with livedoor Reader
著作一覧

2008-09-05

_ 2つのvsnprintf_l

まずはMSDNを見る。
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自身=ライブラリ提供者側の修正で済むから、というのもあるかも。


2003|06|07|08|09|10|11|12|
2004|01|02|03|04|05|06|07|08|09|10|11|12|
2005|01|02|03|04|05|06|07|08|09|10|11|12|
2006|01|02|03|04|05|06|07|08|09|10|11|12|
2007|01|02|03|04|05|06|07|08|09|10|11|12|
2008|01|02|03|04|05|06|07|08|09|10|11|12|
2009|01|02|03|04|05|06|07|08|09|10|11|12|
2010|01|02|03|04|05|06|07|08|09|10|11|12|
2011|01|02|03|04|05|06|07|08|09|10|11|12|
2012|01|02|03|04|05|06|07|08|09|10|11|12|
2013|01|02|03|04|05|06|07|08|09|10|11|12|
2014|01|02|03|04|05|06|07|08|09|10|11|12|
2015|01|02|03|04|05|06|07|08|09|10|11|12|
2016|01|02|03|04|05|06|07|08|09|10|11|12|
2017|01|02|03|04|05|06|07|08|09|10|11|12|
2018|01|02|03|04|05|06|07|08|09|10|11|12|
2019|01|

ジェズイットを見習え