从DLL返回值的错误处理

时间:2020-09-11 08:05:16

标签: c++ dll error-handling return-value

使用C ++,我正在研究DLL中的一种方法,该方法可从设备返回温度值。

在无法读取温度的情况下,我还要返回设备的错误状态。这样,我想添加一种错误处理方式,以避免调用额外的方法来获取设备状态。

因此,如果无法正确读取温度值(例如,如果设备未初始化,我可以返回-1.0或-2.0,但可以将其解释为温度。

我还希望该方法的调用和使用此DLL与另一种编程语言(例如Pascal / Delphi,Python等)兼容。

在Java中,我将使用以下方法制作一个罐子:

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;

} 

0 个答案:

没有答案