我想所有的结构成员初始化为0。常用的解决方法是让这样的事情:初始化结构成员为0(GCC -Wextra)
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?
当你用'{}'初始化时,它是否也会产生警告? (我认为这将是更习惯的形式。) –
为什么不使用memset? –
@JamesKanze:初始化'{}'无效C. – pmg