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

int snapshot[kSnapshotSize];

我真的很想在我的实现文件中这样初始化:
snapshot[kSnapshotSize] = {[0 ... kSnapshotSize-1] = 5};

但是编译器抱怨道:“需要表达式”
有人能告诉我我做错了什么吗?
更新:int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize] = 5};似乎有效,所以我可能遗漏了一些基本的东西。我想我可以使用memset,但首先要确定这是不可能的(以及原因)
更新2:正如你们中的许多人指出的那样,似乎只有初始化这样的数组才能在以后不填充它。我最终使用了一个for循环。

最佳答案

我想你是说

int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize - 1] = 5};

但使用...是gcc特有的扩展。如果你不介意仅限于海合会,那没关系。
memset()不起作用;它将目标的每个字节设置为指定值。
对于可移植性,最好使用显式循环来设置每个元素。

关于c - 使用C中的单个值初始化数组(GCC),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7780405/

10-13 03:00