У меня есть устаревшая база кода C на работе, и я нахожу множество реализаций функций в стиле ниже.
char *DoStuff(char *inPtr, char *outPtr, char *error, long *amount)
{
*error = 0;
*amount = 0;
// Read bytes from inPtr and decode them as a long storing in amount
// before returning as a formatted string in outPtr.
return (outPtr);
}
Использование DoStuff:
myOutPtr = DoStuff(myInPtr, myOutPtr, myError, &myAmount);
Я нахожу это довольно тупым, и когда мне нужно реализовать подобную функцию, я в итоге выполняю:
long NewDoStuff(char *inPtr, char *error)
{
long amount = 0;
*error = 0;
// Read bytes from inPtr and decode them as a long storing in amount.
return amount;
}
Использование NewDoStuff:
myAmount = NewDoStuff(myInPtr, myError);
myOutPtr += sprintf (myOutPtr, "%d", myAmount);
Не могу не спросить, есть ли что-то, чего мне не хватает в верхнем примере, есть ли веская причина для использования такого подхода?