从DLL返回值的错误处理 使用C++,我在DLL中研究一种方法,它从设备返回一个温度值。
如果无法读取温度,我想返回设备的错误状态。这样,我想添加一种错误处理,以避免调用额外的方法来获取设备状态 因此,如果不能正确读取,我不能返回错误的温度值,例如,如果设备未初始化,我可以返回-1.0或-2.0,但可以将其解释为温度 我还希望调用此方法和使用此DLL将与其他编程语言(如Pascal/Delphi、Python等)兼容 在Java中,我将使用以下方法制作一个jar:从DLL返回值的错误处理 使用C++,我在DLL中研究一种方法,它从设备返回一个温度值。,c++,dll,error-handling,return-value,C++,Dll,Error Handling,Return Value,如果无法读取温度,我想返回设备的错误状态。这样,我想添加一种错误处理,以避免调用额外的方法来获取设备状态 因此,如果不能正确读取,我不能返回错误的温度值,例如,如果设备未初始化,我可以返回-1.0或-2.0,但可以将其解释为温度 我还希望调用此方法和使用此DLL将与其他编程语言(如Pascal/Delphi、Python等)兼容 在Java中,我将使用以下方法制作一个jar: public float getTemperature() throws Exception{ float temp
public float getTemperature() throws Exception{
float temperature;
try{
temperature = ...;
return temperature;
}catch(Exception E){
throw new Exception("Device not initialized...")
}
}
在C++中用以下方法实现这一点是正确的:温度将被参数返回,方法的负返回值包含错误代码:
声明:
extern "C" MYDLL int getTemperature(float*);
实施:
int getTemperature(float* temp)
{
if (device_not_ready)
{
*temp = 0;
return -1;
}
if (device_has_error)
{
*temp = 0;
return -2;
}
float temperature = device_temperature;
*temp = temperature;
return 1;
}
当
nullptr
不是有效输入时,应使用引用而不是指针作为参数。否则,代码看起来还可以,您是否看到任何问题?能否详细说明您所显示的代码存在的问题?你只是在问这种方式是否可以(答案是“没问题”)吗?谢谢你的注释,我已经修改了文本以突出问题。你有很多很多方法可以用来表示错误。可以引发异常,可以返回带有温度和错误代码的struct
,也可以返回一个std::optional
,它可以保持温度,也可以不保持温度,不保持一个表示错误。如果某个变量出现故障,则可以传入对该变量的引用,并向该变量写入错误代码。还有更多。你只需要决定如何做/什么最适合项目中现有的代码。我不能使用struct或抛出异常,因为DLL可以在Delphi、Python、JNI等中使用。。。