Я знаю, это было предложено несколько раз, но не мог найти должность, относящуюся к этой конкретной проблемы:Arduino библиотеки: несколько определений глобальной переменной
# config.h
String g_ssid = "";
# webserver.cpp
#include "config.h"
bool saveConfig(String *ssid, String *pass)
{
// Open config file for writing.
File configFile = SPIFFS.open("/cl_conf.txt", "w");
if (!configFile)
{
Serial.println("Failed to open cl_conf.txt for writing");
return false;
}
// Save SSID and PSK.
configFile.println(*ssid);
configFile.println(*pass);
configFile.close(); // <-- error in this line???
return true;
} // saveConfig
Compile ошибки:
webserver.cpp.o: In function `saveConfig(String*, String*)':
C:\Users\AppData\Local\Temp\build9148105163386366718.tmp/webserver.cpp:114: multiple definition of `g_pass'
Декларирование в инлайн не представляется возможным, поскольку компилятор жалуется:
'g_ssid' declared as an 'inline' variable
Очевидно extern
переменная из config.h не имеет большого смысла в отношении конфигурации config.h. Как это можно решить?
Ошибка компиляции, похоже, что это не имеет никакого отношения к коду, который вы опубликовали? Что внутри webserver.cpp, которое несколько раз задает g_pass? – Unimportant
Обновлено. Мне интересно, возможно ли определение в заголовке вообще, поскольку все ответы указывают на перемещение определения в файл c или вложение. Оба здесь не применимы. – andig