著作一覧 |
HRESULT Foo(VARIANT_BOOL bar) { if (bar == TRUE) { // VBからは絶対実行されない。でもVC++からは呼べる } return S_OK; }まずいのは、呼び出す側のVC++プログラマも
IFoo* ifoo; CoCreateInstance(CLSID_Foo, .... (void**)&ifoo); ifoo->Foo(TRUE); ifoo->Release();なんて書いていたから。(確か、VBで作成したActiveXコントロールで、
If bar = True Then
とか書いてあるとひっかっかたような気もするが不確実)HRESULT Foo(VARIANT_BOOL bar) { if (bar) // 勘違いしているVC++から呼ばれてもOK { // 正しく実行される } return S_OK; }で、呼び出しは
IFoo* ifoo; CoCreateInstance(CLSID_Foo, .... (void**)&ifoo); ifoo->Foo(VARIANT_TRUE); ifoo->Release();っていうか、Win32APIでも!FALSEが不定値というのは多いから、TRUEというdefineを無しにしておいて、
if (!Win32APICall(...)) // 失敗の判定 { ... } if (Win32APICall(...)) // 成功の判定 { ... }というのをベストプラクティスとしておきゃ良いのだが、なぜか、真かどうかを同値検査で判定するコードを書く人っているのだな、これが。
これだけそこら中で見かけるのだから、よほどモノが良いか、よほど宣伝が良いかのどちらかだろう。で、当然、後者のはずはありえない。だから、機会を見つけて移行しようかな。
移行ツール次第のような。
ジェズイットを見習え |
みんなCVSに愛想が尽きたと言う説もあります。<br>ちなみに個人的にCVSで一番嫌なのは、(安全に)<br>サーバを立てるのがめちゃくちゃ難しいことです。
なるほど。安全かどうかって視点はイントラネットでしか使ってないから欠落してたなぁ。
CVSサーバが難しいから、sf.netが成立してるんですよ(断言)<br>おれもSubversion使おうかなー
うぅっ「真かどうかを同値検査で判定するコードを書く人」です。COMとかではまずいのですね。<br>「true以外は全部falseじゃー」っていう勢いで書いているのですが...。
なんかちょっと前に MFC の何かが BOOL の引数を TRUE か FALSE だと assert()<br>してたせいでいらない苦労をした記憶....
ありそうだなぁ。あの会社、API作ってる個々のサブシステムの連中と個々の言語製品作ってる連中で、全く意思の統一が取れてなさそうだし。