这就是我过去设置此全局对象的方式。

MqttClient mqtt("192.168.1.8", 1883, msgRev);

我想检索存储在spiffs中的IP地址,并使用它声明此全局对象。
MqttClient mqtt(AppSettings.MQTTUWL, 1883, msgRev);

AppSettings包含Spiff的结构。

这是我的init(),
void init()
{
    spiffs_mount(); // Mount file system, in order to work with files
    AppSettings.load();
    //...
}

问题是在声明目标代码期间,尚未加载AppSettings。我应该如何声明全局对象,使其能够从AppSettings检索值?

我在ESP8266上使用SMING框架。

最佳答案

您可能必须声明MqttClient作为指针,并在挂载SPIFFS之后对其进行初始化,或者将SPIFFS挂载代码放入客户端类的构造函数中(这可能不是您想要的)。

为此,您的代码将如下所示:

MqttClient *mqtt;

void init()
{
   spiffs_mount(); // Mount file system, in order to work with files
   AppSettings.load();
   mqtt = new MqttClient(AppSettings.MQTTUWL, 1883, msgRev);
   //...
}

这只会在安装完成后创建客户端。

关于c++ - 从ESP8266 SPIFFS中存储的变量设置全局对象,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35793246/

10-13 05:26