何か創りたい。
http://toshirr.blog13.fc2.com/
* Toshi's Recess Room - Toshi Creates. - 時間を食った罠
<< 2017/09 - 2017/10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - 2017/11 >>

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[ No. ]
[ 日時 : --/--/-- (--.) --:--:-- ]
[ カテゴリ : スポンサー広告 ]


時間を食った罠

C++ と COM で久々にハマりました(罠的な意味で)。

まず、IShellLink インターフェイスを CoCreateInstance しようとしたとき。
エラーが「クラスが登録されていません」。
いや有り得ねぇだろと。

CComPtr<IShellLink> pShellLink;
if (FAILED(pShellLink.CoCreateInstance(__uuidof(IShellLink))))
return false;

これでダメでした。実はこのとき渡されていたのは IShellLinkW の CLSID(恐らく)。

CComPtr<IShellLink> pShellLink;
if (FAILED(pShellLink.CoCreateInstance(CLSID_IShellLink))))
return false;

これで通りました。

次はコレ。

(1)
char cTest = 0xFF;
if (cTest == 0xFF)
cout << "true";
else
cout << "false";

(2)
char cTest = 0xFF;
int nTest = 0xFF;
if (cTest == nTest)
cout << "true";
else
cout << "false";

両方とも true かと思いきや false になります。
なんでかって、ただ単純に char が signed だから -1 と 255 を比較してることになったわけです。
メモリ上のバイナリは同一だけどそれぞれが表す値は異なるのに、
signed だったことを考慮に入れてませんでした。ヤバイ。

そしてもう一つ、16 進数のリテラルは char 型扱いになってくれないようです。
コンパイルした時点で cTest へ代入する部分に対して「切り捨てられてんだけど」と警告されます。
スポンサーサイト

[ No. 832 ]
[ 日時 : 2009/08/02 (Sun.) 00:05:11 ]
[ カテゴリ : プログラミング ]
[ コメント : 1 ]
[ トラック バック : 0 ]


コメント

[ No. 206 ]
[ 日時 : 2009/08/03 (Mon.) 14:12:48 ]
[ 名前 : BlogPetのOverhand # - ]
[ URI : http://www.blogpet.net/profile/view/8065ec4f87116c7b89a25bec17649460 ]
[ タイトル : 次ってなに? ]

次ってなに?


コメントの投稿









トラック バック


トラック バック URI

http://toshirr.blog13.fc2.com/tb.php/832-a56403d9


前後の記事

プロフィール

Toshi

  • Author:Toshi
  • 何かを創りたい Toshi の記録


ブログ内の検索


最近の記事


最近のコメント


最近のトラック バック


カレンダー

09 | 2017/10 | 11
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31 - - - -


月別の記事


カテゴリ別の記事


RSS フィード


<< 2017/09 - 2017/10 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 - 2017/11 >>
* Toshi's Recess Room - Toshi Creates. - 時間を食った罠
http://toshirr.blog13.fc2.com/
(C) 2005 - 2009 Toshi, All Rights Reserved.

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。