PathQuoteSpaces() の戻り値の型がモノによって異なっていて死亡

// VC6
LWSTDAPI_(void)     PathQuoteSpacesA(LPSTR lpsz);
LWSTDAPI_(void)     PathQuoteSpacesW(LPWSTR lpsz);
// VC2003
LWSTDAPI_(void)     PathQuoteSpacesA(LPSTR lpsz);
LWSTDAPI_(void)     PathQuoteSpacesW(LPWSTR lpsz);
// VC2005
LWSTDAPI_(void)     PathQuoteSpacesA(LPSTR lpsz);
LWSTDAPI_(void)     PathQuoteSpacesW(LPWSTR lpsz);
// VC2010 // "BOOL" …だと…?
LWSTDAPI_(BOOL)     PathQuoteSpacesA(__inout_ecount(MAX_PATH) LPSTR lpsz);
LWSTDAPI_(BOOL)     PathQuoteSpacesW(__inout_ecount(MAX_PATH) LPWSTR lpsz);

えぇ…? ('A`)

http://ir9.jp/hd16/hd0627_00.png
http://ir9.jp/hd16/hd0627_01.png
http://ir9.jp/hd16/hd0627_02.png
http://ir9.jp/hd16/hd0627_03.png

(順に VC6/2003/2005/2010)




ちなみに、Web上のMSDN では 戻り値が BOOL だったりしますが、VC6/2003/2005 の ヘルプでは void となってたりします (↓順に VC6/2003/2005 の MSDN ヘルプ)

http://ir9.jp/hd16/hd0627_04.png
http://ir9.jp/hd16/hd0627_05.png
http://ir9.jp/hd16/hd0627_06.png

で、戻り値の型を環境によって変えちゃって良いんですかね…? 特に void → BOOL で戻り値が「無し」から「なんか4byteある」の状態になるので、スタックぶっ壊れないの? と思ってみたりはしますが、__stdcall → 呼び出し先の関数がスタックの調整を行うので、変わっても問題無い感じなんですかね…? 個人レベルではめっちゃおっかない感いっぱいなんですけど(ぉ

とりあえず何が言いたいかというと、おのれ Micros●ft!!!!

追記

PathUnquoteSpaces() も似たような問題がありました

Web上じゃ void なのに、SDKの定義は BOOL … どういう事だってばよ…!?