如何将DWORD值转换为空值
How to convert an DWORD value to an void* one?
给定这些typedef
s和以下值:
typedef void GTVOID;
typedef GTVOID *PARAM_VALUE;
typedef unsigned long UDGT32
typedef UDGT32 PARAM_CONST;
typedef signed long DGT32;
typedef DGT32 RESULT_FUNC;
DWORD value = 1; // given from a define
我如何转换它以满足C++中设备SDK功能的需求?
RESULT_FUN RSetParam( PARAM_CONST DeviceParameter, PARAM_VALUE value);
样本中的C参考代码为:
RSetParam( R_SOME_PARAM_CONST, (PARAM_VALUE)value );
我在下面试过了,但很奇怪。它编译得还可以,整天都在工作令人毛骨悚然的运气,开始抛出访问违规的蓝色:
RSetParam(R_SOME_PARAM_CONST, reinterpret_cast<void*> (value));
我做错了什么?
您已尝试将值1
重新解释为地址。根据函数RSetParam
对此地址(值)所做的操作,程序可能会分段故障。尤其是当它试图写入此地址时。
我认为,函数RSetParam
等待一个变量的地址作为第二个参数。变量的类型可能取决于其他因素,也就是为什么地址必须作为void *
传递。
因此,如果您想将数字1作为DWORD传递,您必须首先在堆栈上分配一个变量,然后传递其地址:
DWORD tmp = 1; // given from define
RSetParam( R_SOME_PARAM_CONST, (PARAM_VALUE) &tmp ); // note the '&' !
相关文章:
- 无法将内存地址转换为值
- 使用 const char* 键映射 C++ 检索空值
- 返回空值的字符串值
- boost::any 如何检查空值/未定义的值
- C++ - 无法从基类继承 |提供空值
- C++空值和此指针
- 使用 cin 或 getline() 输入空值
- 可变参数列表是否以空值终止?
- C++ 引用是否在需要时隐式转换为值?
- 如何将整数重新初始化/设置为空值
- 检查构造函数的空值
- 无法从Linux,C ++执行"my_script" python脚本"main(filename)"功能;pModule = PyImport_Import(pName);返回空值
- 使用Nlohmann JSON将JSON数据保存在文件中时获取空值
- 在命名空间中定义变量,但在测试中获取空值
- 将 CURL 转换为字符串时为空值
- QCharts - 在 QLineSeries 中创建一个中断(空值)
- 动态强制转换返回空值
- SDL 表面返回空值
- 如何将JSON文件中的数据转换为值(double,int ..)
- 如何将DWORD值转换为空值