Массивы ссылок не допускаются. Кроме того, вы не можете ограничить размер внутреннего массива таким образом.
Массивы не могут передаваться как значения, они в основном распадаются на указатели, когда вы передаете их другой функции. Это также означает, что вам нужно передать размер массива.
То, что вы написали: sizeof(header)
- это ошибка - вы получили массив в стиле C в качестве аргумента функции , массив распадается на указатель, и sizeof(header)
дает вам размер указателя , а не длину массива!
Я бы использовал структуру для фактического заголовка, поскольку вам всегда нужен размер 2, и тогда вам нужно иметь дело только с одномерным массивом:
struct HttpHeader {
String name;
String value;
};
t_httpUpdate_return updateheader(WiFiClient& client, const String& url,
const String& currentVersion = "",
const HttpHeader* headers, int headers_size)
{
HTTPClient http;
http.begin(client,url);
for (int i = 0; i < headers_size; i++) {
http.addHeader(F(headers[i].name), headers[i].value);
}
return handleUpdate(http, currentVersion, false);
}
// Calling it somewhere:
HttpHeader headers[] = { { String("Accept"), String("application/json") } };
updateheader(client, version, headers, 1);
Обратите внимание, что это означает, что данные массива живут в стеке вызывающей функции, и указатель становится недействительным как только эта функция закончится. Но это всегда так, когда не используется выделение кучи.