GCC 缺少带有静态模块级变量的初始化程序周围的大括号
GCC missing braces around initializer with static module level variable
我收到以下警告:
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 的情况下编译时,它可以工作。
你应该使用:
static foo x ={ {0.0f, 0.0f, 0.0f} };
外括号用于指示struct foo
的初始化。
内括号表示array a
的初始化。
形式上,您的初始化应如下所示:
static foo x = {{0.0f, 0.0f, 0.0f}};
我收到以下警告:
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 的情况下编译时,它可以工作。
你应该使用:
static foo x ={ {0.0f, 0.0f, 0.0f} };
外括号用于指示struct foo
的初始化。
内括号表示array a
的初始化。
形式上,您的初始化应如下所示:
static foo x = {{0.0f, 0.0f, 0.0f}};