在每次运行时将函数保存到同一个地址。

问题描述 投票:2回答:1

我有一个对象,它有一个指向函数的指针数组作为配置值,像这样。

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++ function memory-address
1个回答
0
投票

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

没有,在标准的C++中没有。

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

我可以把所有允许使用的函数做成一个指针数组......。在这里使用lambda函数会不会

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

© www.soinside.com 2019 - 2024. All rights reserved.