いくつかのSDKの融合である特別なデバイスを制御するC++コードを書いています。私のコードは次のようになります
#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の例など)です。結局のところ、コードは本当に乱雑に見えます。
編集
私は時々ラッパーでエラーを処理します。