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

save function to same adress in each runtime

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

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 函数会节省一些 space 吗?另外,这意味着我的函数总是被加载,不是吗?

Is there a way to write functions specify the address to which a function is written to?

没有。不在标准 C++ 中。

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

I could make an array of pointers with all functions that are allowed ... Would using lambda functions here

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