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