How can I remove the warning in GCC 4.6: "missing initializer [-Wmissing-field-initializers]"?

c, gcc, glib, struct, warnings

Solution

Use `G_VALUE_INIT` to initialize `GValue`-s. Their (private) structure is in `/usr/include/glib-2.0/gobject/gvalue.h` which `#define G_VALUE_INIT` appropriately.

I strongly disagree with your assessment that it is GCC's bug. You ask to be warned if a field is not explicitly initialized with `-Wmissing-field-initializers` and you get the warning you deserve.

Sadly `G_VALUE_INIT` is not documented, but it is here. Code with

GValue value = G_VALUE_INIT;

There is no universal solution to never get the warning about missing field initialization if `-Wmissing-field-initializers` is asked. When you ask for such a warning, you require the compiler to warn of every incomplete initializers. Indeed, the standard requires than all the non-explicitly initialized `struct` fields be zeroed, and `gcc` obeys the standard.

You could use diagnostic pragmas like

#pragma GCC diagnostic ignored "-Wmissing-field-initializers"

But my feeling is that you should code with care, and explicitly initialize all the fields. The warning you get is more a coding style warning (maybe you forgot a field!) than a bug warning.

I also believe that for your own (public) `struct` you should `#define` an initializing macro, if such `struct` are intended to be initialized.

Problem

The code ``` GValue value = { 0 }; ``` gives the following warning: missing initializer [-Wmissing-field-initializers] I know that's a GCC bug, but is there some trick to remove it? It is really not nice see such unreal warnings. But I don't want power off the warning because it will hide real warnings from me too. And sorry, but I can't update my GCC to 4.7 (where looks like it was fixed) version, yet.

Original source

Related problems