我想将所有结构成员初始化为0。 常见的解决方案是做类似这样的事情:
我创建了这个示例:
问题是,为什么使用-Wextra会生成此警告?也许并不总是"= {0}",把所有成员都设置为0呢?
struct foo bar = {0}
我创建了这个示例:
#include <stdio.h>
struct Stru2 {
int c;
int d;
};
struct Stru1 {
int a;
Stru2 b;
};
int main()
{
struct Stru1 aaa = { 0 };
return aaa.b.c;
}
我使用这些参数编译它(gcc 4.6.3),以确保 ANSI 如何处理它
gcc -Wall -Wextra -pedantic -ansi main.cpp
我收到了以下警告:
main.cpp: In function ‘int main()’:
main.cpp:36:28: warning: missing initializer for member ‘Stru1::b’ [-Wmissing-field-initializers]
问题是,为什么使用-Wextra会生成此警告?也许并不总是"= {0}",把所有成员都设置为0呢?
{}
是无效的 C 语言代码”。 - pmgstruct Stru1
的成员变量中,有一个类型为Stru2 b;
,但没有定义typedef struct Stru2 Stru2;
。 - Daniel Fischer