我正在编写一个C++代码,用于控制一个特殊设备,它是多个SDK的融合体。我的代码看起来像用于程序硬件编程的错误处理技术
#define sdk1SafeCall(err) __sdk1SafeCall(err,__FILE__,__LINE__)
int errorcode = 0;
sdk1SafeCall(sdk1_InitializeDevice());
errorcode=sdk2_InitializeDevice();
errorcode=sdk3_InitializeDevice();
if (some_parameter)
{
errorcode=sdk2_readDevice(true);
}
else
{
errorcode=sdk3_writeDevice();
}
label again: errorcode=sdk1_readDevice();
if (error) goto again;
errorcode=close_everything();
使用参数将重新安排控制流。我当前的方法使用类似cudaSafeCall来包装错误代码并退出。我不知道该怎么做的是在哪里存储这些错误的详细解释或如何从它们中恢复(如goto示例)。在一天结束时,代码看起来非常混乱。
编辑
我有时会处理与包装的错误。
无论如何,你实际上从来没有真正阅读过错误代码的价值,所以你可以不用打扰它,并用更清晰的代码实现相同的破坏实现。 –
@PeteFordham我不知道如何处理他们。在我的实际实现中,我使用了'sdk1SafeCall(sdk1_readData())',它可以像在CUDA中一样打印一个数字,一个'__FILE__'和'__LINE__'。 – Mikhail