我在头文件中声明了一个数组,如下所示:
int snapshot[kSnapshotSize];
我真的很想在我的实现文件中初始化:
snapshot[kSnapshotSize] = {[0 ... kSnapshotSize-1] = 5};
然而编译器抱怨:“预期表达式”
谁能告诉我我做错了什么?
更新:int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize] = 5};
似乎有效,所以可能我遗漏了一些基本的东西。我想我可以使用memset
,但首先要确保这是不可能的(以及为什么)
更新2:正如你们许多人所指出的那样,似乎只能初始化一个数组,而不是以后填充它。我最终使用for
循环。
答案 0 :(得分:4)
我认为你的意思是
int snapshot[kSnapshotSize] = {[0 ... kSnapshotSize - 1] = 5};
但...
的使用是特定于gcc的扩展。如果您不介意仅限于gcc,那没关系。
memset()
不起作用;它将目标的每个字节设置为指定值。
为了便于携带,最好的办法是使用显式循环来设置每个元素。