據我所知,VariantChangeType
應該是正確檢測溢出並返回DISP_E_OVERFLOW
如果發生溢出。但是,我發現至少有一個情況不會發生。有沒有人對此有所瞭解?我正在使用Windows 7,VS2013,VC++ 2008。VariantChangeType和溢出
VARIANT v;
VariantInit(&v);
v.vt = VT_UI2;
v.uiVal = 32768;
HRESULT hr = VariantChangeType(&v, &v, 0, VT_I2);
通過上面的代碼,我預計hr
將等於DISP_E_OVERFLOW
。但S_OK
從VariantChangeType
返回和的值是-32768
(正是我期望從16位整數溢出)。
+1。這種差異對我來說似乎是一個(20歲)的錯誤。 – 2014-09-19 07:51:10
經過多次辯論後,我會給出這個答案。在下面看到我對@Hans的評論。 – 2014-09-22 15:23:09