我正在尝试从现有代码中删除静态局部变量。我们的想法是将静态变量移动到全局结构。在这种情况下,我在更改多维数组时遇到了麻烦。 例如:
static int arr[100];
我将替换为
int *arr = global_hndl->arr;
因此以下部分代码不必更改。 有没有办法对多维数组做同样的事情? 喜欢
static int32_t delay[6][170]
例如
int foo(int x, int y)
{
static int arr1[10];
static int arr2[10][20];
/*
do something
*/
}
typedef struct _hndl
{
int arr1[10]
int arr2[10][20]
}global_handle
int foo(int x, int y)
{
int *arr1 = global_handle.arr1;
//
/* i am trying to change arr2 in similar fashion */
}
答案 0 :(得分:0)
您可以将变量定义转换为类型定义:
// variable
int arr[100];
// type
typedef int arr_type[100];
这适用于任何对象。现在,您可以使用正确的指针类型替换它们中的任何一个:
// somewhere global
arr_type global_array;
// create local reference
arr_type& arr = global_array;
这仅适用于C ++。在C中,您必须使用指针,然后指针需要不同的访问语法。这正是将C和C ++标签放入问题的原因通常是错误的。