Disabling -Wmissing-field-initializers for GCC?

Kevin Funk kfunk at kde.org
Mon Feb 10 13:24:40 UTC 2014


Kevin FunkAm Dienstag, 4. Februar 2014, 11:35:41 schrieb :
> Hey,
> 
> Sergey's code causes some warnings when compiling with GCC:
> 
> /home/krf/devel/src/kdevplatform/language/codegen/basicrefactoring.cpp:212:1
> 7: warning: missing initializer for member
> ‘KDevelop::BasicRefactoring::NameAndCollector::newName’ [-Wmissing-field-
> initializers]
>          return {};
>                  ^
> 
> IMO, the code is fine, and GCC is being overly picky about this. IMO, using
> {} clearly states that I want all members to be default initialized and
> want to be done with it. Notably, Clang doesn't throw such a warning.
> 
> Example test.cpp:
> struct S { int i; int j; };
> int main()
> {
>     S a{}; (void)a;
>     S b{0,}; (void)b;
> }
> 
> % g++ -std=c++11 -Wextra test.cpp
> test.cpp: In function ‘int main()’:
> test.cpp:4:9: warning: missing initializer for member ‘S::i’
> [-Wmissing-field- initializers]
>      S a{}; (void)a;
>          ^
> test.cpp:4:9: warning: missing initializer for member ‘S::j’
> [-Wmissing-field- initializers]
> test.cpp:5:11: warning: missing initializer for member ‘S::j’ [-Wmissing-
> field-initializers]
>      S b{0,}; (void)b;
>            ^
> 
> => GCC being very noisy.
> 
> % clang++ -std=c++11 -Wextra test.cpp
> test.cpp:5:11: warning: missing field 'j' initializer [-Wmissing-field-
> initializers]
>     S b{0,}; (void)b;
>           ^
> 
> => Clang being more reasonable here, only throws a warning for the second
> case.
> 
> Doesn't look like GCC is going to change that behavior [1] soonish, so I'd
> propose getting rid off the warning for GCC, given that we are going to use
> brace-initialization more and more.
> 
> Opinions?

Hey,

Noone objected, so I just committed this to both kdevelop and kdevplatform 
master.

Greets

-- 
Kevin Funk


More information about the KDevelop-devel mailing list