勘違いされがちなHRESULT型の使用法
はい、激しく勘違いしていました><
勘違いコード
HRESULT hr = S_FALSE; if(SUCCEEDED(hr)) { // なんとここにきてしまう!! }
それは勘違いをしているからだよ
定義の内容↓
-
- E_FAIL : 失敗。
- S_OK :0 成功。条件が TRUE だった時に使う。
- S_FALSE :1 成功。条件が FALSE だった時に使う。
SUCCEEDEDはこう定義されているので、
-
- ((HRESULT)(hr) >= 0)
S_FALSEはTRUEになってしまいます。
つまりエラーはE_FAILを返しなさいよってことなんですね><
まぁ名前をしっかり見れば頭に「E_」「S_」って親切にも書いてくれてるけどね。
勘違いでした!