Вы должны вызвать функцию с 3 параметрами, потому что функция ожидает 3 параметра. Там нет механизма уровня языка, чтобы опустить i
. Все дело в том, как функция была задокументирована и реализована для работы с i
. Передавать NULL
.
может быть, а может и не быть. Допустим, вы должны передать действительный i
, если явно не задокументировано, что передача NULL
в порядке.
Рассмотрим следующие два реализации, первая требует действительного i
, вторая делает i
необязательным благодаря использованию NULL
.
void max_f32_required(float32_t *x, float32_t *val, size_t *i) {
*val = *x;
*i = 42;
}
// Expect to find it documented that i is ignored when NULL.
void max_f32_optional(float32_t *x, float32_t *val, size_t *i) {
*val = *x;
if (i != NULL) *i = 42; // Omitted if i is NULL.
}