使用 memset 来防止 ''variable-sized object may not be initialized'

Use of memset to prevent ''variable-sized object may not be initialized'

我正在尝试使用下面的代码将值设置为二维数组(设想一个游戏板或一些网格),但我收到 'variable-sized object may not be initialized' 错误。

我尝试使用 memset 解决它,但无济于事。

非常感谢,如果能提供一些提示,我们将不胜感激。


// constants
#define DIM_MIN 3
#define DIM_MAX 9

// board
int board[DIM_MAX][DIM_MAX];


void init(void)
{
  int highest = d^2;

  for (int i = 0; i < d; i++)
    {
        for (int j = 0; j < d; j++)
        {
            int board[i][j] = highest - 1;
        }
    }
    if (d % 2 == 0)
    {
        int board[d-1][d-2] = 2;
        int board[d-1][d-3] = 1;
    }    
}

问题出在 for 循环体中的代码,它说

  int board[i][j] = highest - 1;

你想要的可能是

  board[i][j] = highest - 1;

if 条件体也是如此。

为了详细说明错误消息,int board[i][j] = highest - 1; 尝试定义一个无法初始化的新 VLA (variable length array)

引用 C11,章节 §6.7.9,初始化强调我的

The type of the entity to be initialized shall be an array of unknown size or a complete object type that is not a variable length array type.