C++ c++;11零初始化结构警告
我试图通过三种方式对POD(仅C++ c++;11零初始化结构警告,c++,c++11,struct,initialization,C++,C++11,Struct,Initialization,我试图通过三种方式对POD(仅int32\t,char[4]等)结构(它可以包含多个POD结构)进行零初始化: struct my_struct s={}-这会给我一个-Wmissing字段初始值设定项警告 struct my_struct s{}-这会给我一个-Wmissing字段初始值设定项警告 及 struct my_struct s=my_struct()这不会生成警告 所有三个实例化都属于零初始化语法,如下所述- 为什么在前两个警告?哪个实例化可以保证初始化所有字段为0的结构,而不包含
int32\t
,char[4]
等)结构(它可以包含多个POD结构)进行零初始化:
struct my_struct s={}代码>-这会给我一个-Wmissing字段初始值设定项
警告
struct my_struct s{}代码>-这会给我一个-Wmissing字段初始值设定项
警告
及
struct my_struct s=my_struct()代码>这不会生成警告
所有三个实例化都属于零初始化语法,如下所述-
为什么在前两个警告?哪个实例化可以保证初始化所有字段为0的结构,而不包含任何垃圾值
编辑-我正在使用gcc(g++)4.8.4在哪个编译器上编译?我没有得到任何警告,即使有一个特别启用。请提供一个.GCC 5不再针对这些情况发出警告。{}
是一个空列表,而my_struct()
是一个值初始化对象。两个不同的东西。@Barry我有gcc 4.8.4,然后是相关的。在哪个编译器上?我没有得到任何警告,即使有一个特别启用。请提供一个.GCC 5不再针对这些情况发出警告。{}
是一个空列表,而my_struct()
是一个值初始化对象。两件不同的事情。@Barry我有gcc 4.8.4,这是相关的。