История изменений
Исправление KivApple, (текущая версия) :
Я бы предпочёл второй вариант из-за типобезопасности (тебе надо лишь использовать правильную структуру, ты не можешь передать не тот тип не в той позиции и т. п.). Также это оставляет потенциал для расширения структуры в будущем (добавление полей в конец сохраняет совместимость с предыдущими версиями структуры, а по каким-нибудь флагам внутри структуры можно определять её версию). Такую функцию проще дёргать из других языков программирования по FFI. Функции с переменным числом аргументов вообще лучше наружу не высовывать, они больше сахар для внутренних вызовов, чтобы не объявлять переменные на каждый чих (но для внешнего API ничто не мешает написать обёрток под каждую версию вызова) или где набор аргументов вообще уникален для каждого вызова (например, как у printf).
Исправление KivApple, :
Я бы предпочёл второй вариант из-за типобезопасности (тебе надо лишь использовать правильную структуру, ты не можешь передать не тот тип не в той позиции и т. п.). Также это оставляет потенциал для расширения структуры в будущем (добавление полей в конец сохраняет совместимость с предыдущими версиями структуры, а по каким-нибудь флагам внутри структуры можно определять её версию). Такую функцию проще дёргать из других языков программирования по FFI. Функции с переменным числом аргументов вообще лучше наружу не высовывать, они больше сахар для внутренних вызовов, чтобы не объявлять переменные на каждый чих или где набор аргументов вообще уникален для каждого вызова (например, как у printf).
Исходная версия KivApple, :
Я бы предпочёл второй вариант из-за типобезопасности (тебе надо лишь использовать правильную структуру, ты не можешь передать не тот тип не в той позиции и т. п.). Также это оставляет потенциал для расширения структуры в будущем (добавление полей в конец сохраняет совместимость с предыдущими версиями структуры, а по каким-нибудь флагам внутри структуры можно определять её версию). Такую функцию проще дёргать из других языков программирования по FFI.