在每个运行时将函数保存到相同的地址

save function to same adress in each runtime

本文关键字:地址 保存 函数 运行时      更新时间:2023-10-16

>我有一个对象,它有一个指向函数的指针数组作为配置值,如下所示:

class Object{
public:
bool (*function[2])() = {};
};
bool fooFunc(){return true;}
bool barFunc(){return false;}
Object obj;
void setupObject(){
obj.function[0] = &fooFunc;
obj.function[1] = &barFunc;
}

我在μC上想将使用的功能存储在EEPROM中,以便在程序重新启动时对象可以使用相同的配置恢复。有没有办法编写函数指定函数写入的地址?

或者,我可以制作一个指针数组,其中包含所有允许的函数(几十个(,并且只保存函数 ID,但我不知道如何有效地使用可维护的代码来做到这一点。在这里使用 lambda 函数会为我节省一些空间吗?另外,这意味着我的函数总是被加载,不是吗?

有没有办法编写函数指定函数写入的地址?

不。不是标准C++。

选择地址是链接器执行的操作。如何配置链接器以将函数存储在手动选择的地址中,我不知道;这可能取决于您使用的链接器。

我可以制作一个包含所有允许功能的指针数组......会在这里使用 lambda 函数吗

不。每个 lambda 都有不同的类型,数组的所有元素都具有相同的类型。您不能有一个 lambda 数组。