Наш код (в простой реализации библиотеки) начинает выглядеть так:
err = callToUnderlyingLibrary1();
if (err!=0) {
printf ("blah %d\n", err);
...
}
err = callToUnderlyingLibrary2();
if (err!=0) {
printf ("blah %d\n", err);
...
}
err = callToUnderlyingLibrary3();
if (err!=0) {
printf ("blah %d\n", err);
...
}
Это громоздко и некрасиво. Есть ли лучший способ сделать это? Возможно, с помощью препроцессора C? Я был думая что-то вроде:
CHECK callToUnderlyingLibrary1();
CHECK callToUnderlyingLibrary2();
CHECK callToUnderlyingLibrary3();
где макрос CHECK вызывает функцию и выполняет элементарную проверку ошибок.
Существуют ли предпочтительные идиоматические способы решения этой проблемы?