我想在现有库中创建自己的函数,如果用户没有任何标头,则传递一个空数组。
//.h file
t_httpUpdate_return updateheader(WiFiClient& client, const String& url, const String& currentVersion = "", const String& header[][2] = {{}});
//.cpp file
HTTPUpdateResult ESP8266HTTPUpdate::updateheader(WiFiClient& client, const String& url, const String& currentVersion, const String& header[][2])
{
HTTPClient http;
http.begin(client,url);
for (int i, i < sizeof(header), i++){
http.addHeader(F(header[i][0]), header[i][1]);
}
return handleUpdate(http, currentVersion, false);
}
但是尝试编译时出现下一个错误:
C:\Users\myuser\AppData\Local\Arduino15\packages\esp8266\hardware\esp8266\2.7.1\libraries\ESP8266httpUpdate\src/ESP8266httpUpdate.h:125:143: error: declaration of 'header' as array of references
t_httpUpdate_return updateheader(WiFiClient& client, const String& url, const String& currentVersion = "", const String& header[][2] = {{}});
^
exit status 1
Error compilando para la tarjeta NodeMCU 1.0 (ESP-12E Module).
不允许使用引用数组。另外,您不能像这样限制内部数组的大小。
也许您想使用一些更现代的工具:
#include <utility>
#include <vector>
t_httpUpdate_return updateheader(WiFiClient& client, const String& url, const String& currentVersion = "",
const std::vector<std::pair<string, string>> &headers = {});