我收到以下警告:
test.c:8:1: warning: missing braces around initializer [-Wmissing-braces]
static foo x = {0.0f, 0.0f, 0.0f};
^
test.c:8:1: warning: (near initialization for ‘x.a’) [-Wmissing-braces]
我正在使用gcc -Wall test.c
这是我的代码:
#include <stdio.h>
typedef struct
{
float a[3];
}foo;
static foo x = {0.0f, 0.0f, 0.0f};
int main()
{
printf("%lf", x.a[0]);
return 0;
}
我是否错误地初始化了x?
当我在没有-Wall的情况下编译时,它可以工作。
答案 0 :(得分:3)
您应该使用:
static foo x ={ {0.0f, 0.0f, 0.0f} };
外括号用于指示struct foo
的初始化。
内部大括号用于指示array a
的初始化。
答案 1 :(得分:1)
正式地,您的初始化应如下所示:
static foo x = {{0.0f, 0.0f, 0.0f}};