我正在编写一个 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 示例)。归根结底,代码看起来真的很乱。
编辑
我有时会使用包装器处理错误。