使用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;
}