在每个运行时将函数保存到相同的地址
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 数组。
我有一个对象,它有一个指向函数的指针数组作为配置值,如下所示:
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 数组。