在 C 中用单个值初始化数组 (GCC)

Val*_*adu 2 c gcc

我在头文件中声明了一个数组,如下所示:

int snapshot[kSnapshotSize];
Run Code Online (Sandbox Code Playgroud)

我真的很想在我的实现文件中像这样初始化:

snapshot[kSnapshotSize] = {[0 ... kSnapshotSize-1] = 5};
Run Code Online (Sandbox Code Playgroud)

然而编译器抱怨:“预期表达式”

谁能告诉我我做错了什么?

更新:int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize] = 5};似乎有效,所以可能我错过了一些基本的东西。我想我可以使用memset,但首先要确定这是不可能的(以及为什么)

更新2:正如你们许多人指出的那样,似乎只能初始化一个这样的数组,而不能稍后填充它。我最终使用了一个for循环。

Kei*_*son 6

我想你的意思是

int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize - 1] = 5};
Run Code Online (Sandbox Code Playgroud)

但使用的...是 gcc 特定的扩展。如果您不介意仅限于 gcc,那也没关系。

memset()行不通;它将目标的每个字节设置为指定值。

为了可移植性,最好的选择是使用显式循环来设置每个元素。