История изменений
Исправление firkax, (текущая версия) :
Можно ещё так
if((res = func1()) && (print_error1(res),1) ||
   (res = func2()) && (print_error2(res),1) ||
   (res = func3()) && (print_error3(res),1)){
	return res;
}
Это если печать ошибок у каждой своя. Если общая можно вниз вынести.
Хотя я бы каждому свой return сделал но на той же строке что и вызов.
Исправление firkax, :
if((res = func1()) && (print_error1(res),1) ||
   (res = func2()) && (print_error2(res),1) ||
   (res = func3()) && (print_error3(res),1)){
	return res;
}
Это если печать ошибок у каждой своя. Если общая можно вниз вынести.
Исправление firkax, :
if((res = func1()) ||
   (res = func2()) ||
   (res = func3()) {
	return res;
}
Исходная версия firkax, :
if((res = func1()) ||
   (res = func2()) ||
   (res = func3()) {
	//<print error>
	return res;
}
...