C语言静态变量问题

现在我有两组数据,需要输入两个代码一样的函数,函数内有静态变量,分别存储两组数据的历史值。有什么很好的做法?

我想到
1.为两组数据设两个除名字外一模一样的函数,但感觉代码量成倍增加,而且繁琐
2.传入两个外部定义的全局静态变量,但不能很好的隐藏变量,外部变量一大堆很乱
还有其他方法吗?

阅读 2.4k
2 个回答

传递两个外部定义的变量比较好,或者是独立出一个函数

void do_something_impl(int *data) {
    ...
}

然后使用的时候用简短的函数包装一下,这种增加不了太多代码

void do_something() {
    static int *data;
    do_something_impl(data);
}

函数内的静态变量设置成一个二维数组,然后根据函数参数决定使用哪一组数据。比如:

void foo(int group) {
  static int data[2][DATA_SIZE];
  do_something(data[group]);
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进