小编Mat*_* G.的帖子

如何在没有全局变量的代码中共享常量状态

我有一个使用外部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()显然不是.有什么方法可以解决这个问题吗?

c scope

1
推荐指数
1
解决办法
96
查看次数

标签 统计

c ×1

scope ×1