我需要将 HRESULT 值作为命令行参数传递给程序。我本来打算通过传递十六进制值来做到这一点,例如:
>receiver.exe 0x80048836
我正在尝试将此字符串表示形式转换回 HRESULT 使用wcstol
,例如:
HRESULT hr = wcstol(argv[2], NULL, 16);
但是,原始 HRESULT 的值通常大于LONG_MAX
,因此在上面的行中hr
以 结束0x7fffffff
。
所以,两个问题:
我以为 HRESULTS 只是 32 位整数?所以我不确定我是如何得到一个大于
LONG_MAX
. 不过,它似乎在原始程序中运行良好(即 HRESULT 不会溢出)。有没有办法绕过
LONG_MAX
限制wcstol
?也许与 HRESULT 实际大小的整数相匹配的另一个版本的函数?
谢谢!