如何解决VarI4FromStr在ARM64上以最低的长值中断了吗?
以下代码在常规x64 Windows上正常。
const LCID LOCALE_EN_US = MAKELCID(MAKELANGID(LANG_ENGLISH,SUBLANG_ENGLISH_US),SORT_DEFAULT);
long val;
BSTR str = SysAllocString(L"-2147483648"));
if (VarI4FromStr(str,LOCALE_EN_US,&val) == S_OK)
{
//False on arm64,true on regular x64
}
SysFreeString(str);
但是,在arm64上,VarI4FromStr返回DISP_E_OVERFLOW。这似乎很奇怪,尤其是由于以下原因:
short val;
BSTR str = SysAllocString(L"-32768"));
if (VarI2FromStr(str,&val) == S_OK)
{
//True on arm64
}
SysFreeString(str);
似乎在做2字节完全相同的操作,效果很好。在正数2147483647上也可以正常工作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。