_beginthreadの戻り値がunsigned という仕様なのに – プログラミング – Home

_beginthreadの戻り値がun...
 
通知
すべてクリア

[解決済] _beginthreadの戻り値がunsigned という仕様なのに


kyu
 kyu
(@kyu)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

MSDNには、
「エラーが発生した場合、-1」
って載ってあるんだけど、どうやってエラーチェック
したらいいのでしょう?


引用未解決
トピックタグ
アイススケーター
 アイススケーター
(@アイススケーター)
ゲスト
結合: 23年前
投稿: 280
 

-1でチェックすればいいのでは。
unsignedの変数に-1を代入してみてください。
longの場合には0xffffffffが代入されているはずです。


返信引用
kyu
 kyu
(@kyu)
ゲスト
結合: 22年前
投稿: 27
Topic starter  

そか。
普通に-1と == 評価してもtrueになるんですね。
ありがとうございました。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

あまり関係ない話なのですが

http://msdn.microsoft.com/library/default.asp?url=/library/en-
us/vccore98/html/_crt__beginthread.2c_._beginthreadex.asp

には失敗時に 1 が返ると書かれていますね。
どっちが誤植なんだろ。


返信引用
YuO
 YuO
(@YuO)
ゲスト
結合: 22年前
投稿: 320
 

1が返る,という方が間違いでは?

とりあえず,VC++ 5.0の_beginthreadのソース(srt/src/thread.c)では,
(unsigned long)-1Lを返しています。

というか,-1を1と書いているのは他にもありまして……。
http://msdn.microsoft.
com/library/en-us/shellcc/platform/commctls/editcontrols/editcontrolreference/ed
itcontrolmessages/em_limittext.asp
> For multiline edit controls, this value is either 1 bytes or the value of the
wParam parameter, whichever is smaller.
こんなエディットコントロール,どう使えと……。

前は,
> For multiline edit controls, this value is either -1 bytes or the value of the
wParam parameter, whichever is smaller.
だったと思いますが……。

どっちにしても,unsignedな値に対して-1と書くのはどうかと思いますけどね……。


返信引用
tetrapod
 tetrapod
(@tetrapod)
ゲスト
結合: 22年前
投稿: 830
 

VC++6.0 の crt/src/thread.c 確認しました。確かに (unsigned long)-1L です。

うーん。昔は、
MSDN 日本語ドキュメントを信ずるものは救われない
MSDN 英語ドキュメントを信じるものは救われる
だったのですが、こーなってくると何を信じてよいのやら。

とりあえず古い MSDN Library CD-ROM を捨てずに取っておこう。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました