Arduino 从C+返回对象引用+;功能 我开始学习ARDUNO的C++,遇到了一些麻烦。 我有一些读取/写入SPIFFS文件的函数。 由于打开配置文件的代码很常见,我希望有一个单独的函数来处理它
我提出了以下函数声明Arduino 从C+返回对象引用+;功能 我开始学习ARDUNO的C++,遇到了一些麻烦。 我有一些读取/写入SPIFFS文件的函数。 由于打开配置文件的代码很常见,我希望有一个单独的函数来处理它,arduino,esp32,arduino-c++,Arduino,Esp32,Arduino C++,我提出了以下函数声明 ConfigFileOpenStatus DeviceOpenConfigFile(const char *path, File *file); 函数接受指向文件路径的字符数组指针和指向打开文件的指针。 然后,我尝试做以下函数定义 ConfigFileOpenStatus DeviceOpenConfigFile(const char *path, File *file) { if (SPIFFS.exists(path)) { file
ConfigFileOpenStatus DeviceOpenConfigFile(const char *path, File *file);
函数接受指向文件路径的字符数组指针和指向打开文件的指针。
然后,我尝试做以下函数定义
ConfigFileOpenStatus DeviceOpenConfigFile(const char *path, File *file)
{
if (SPIFFS.exists(path))
{
file = &SPIFFS.open(path, "r+");
return !file ? Failed : Opened;
}
else
{
file = &SPIFFS.open(path, "w+");
return !file ? Failed : Created;
}
}
这不起作用,因为编译器抱怨错误错误:获取临时[-fppermissive]的地址
据我所知,这意味着一旦DevicePenConfigFile函数返回,文件对象将被释放
所以我的问题是,是否有可能实现一个函数,使我能够获取文件对象引用并在以后发布它?
显然会按值返回SPIFFS.open
文件。返回值将是该行上可用的临时变量。因此,获取该函数的地址没有任何意义,原因与
没有任何意义。它与周围的int func(void)&func()
函数无关DeviceOpenConfigFile
- 为参数传递的指针分配一个新地址没有意义,原因与
没有意义一样-您只更改一个局部变量,调用方没有任何更改,也没有任何内容返回给调用方void func(int x){x=0;}
ConfigFileOpenStatus DeviceOpenConfigFile(const char *path, File* file)
{
...
*file = SPIFFS.open(path, "r+");
调用端分配了
file
。SPIFFS.open返回什么?FS:file类对象。使用Arduino学习C或微控制器是一个可怕的想法。首先,Arduino是C++,或者是它的一些方言。第二,所有的“让我做实际工作”库都不会让你真正学到任何东西。我建议使用裸机MCU,从头开始编写所有内容,即使这需要花费更多的时间。完全同意你@Lundin的观点,但现在我必须走这条路。这似乎可以完成任务!更确切地说,使用“代码>文件和文件< /代码>,因为这是C++。