我有一个使用外部API的程序,它使用自己的状态.程序在开始时存储初始状态.之后,根据输入使用调度程序调用许多函数.它们中的每一个都使用API改变当前状态.其中一个功能应该能够将当前状态重置为初始状态.虽然,这将需要访问开头的变量/常量集,这超出了函数的范围.
一种解决方案是全球化,这被认为是邪恶的.另一种解决方案可以是具有静态变量的函数,以在其第一次调用时存储初始状态.再次调用它将返回静态.虽然,这并不是一个真正的改进.
这个问题有没有干净,可维护的解决方案?
编辑:好的,让我说我毕竟会使用const全局.为了说明它,我将使用以下代码:
extern int get_state();
extern void set_state(int);
const int initial_state = get_state();
int main()
{
while(1) {
// call dispatcher, eventually
break;
}
set_state(initial_state);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
问题是初始化程序initial_state
必须是常量,get_state()
显然不是.有什么方法可以解决这个问题吗?