diff --git a/docs/reference/gobject/gobject-sections.txt b/docs/reference/gobject/gobject-sections.txt index fefe1b783..0b1483a25 100644 --- a/docs/reference/gobject/gobject-sections.txt +++ b/docs/reference/gobject/gobject-sections.txt @@ -376,6 +376,7 @@ g_variant_type_get_gtype
Generic values generic_values +G_VALUE_INIT G_VALUE_HOLDS G_VALUE_TYPE G_VALUE_TYPE_NAME diff --git a/gobject/gvalue.c b/gobject/gvalue.c index 775747460..bca9aa5d1 100644 --- a/gobject/gvalue.c +++ b/gobject/gvalue.c @@ -73,9 +73,9 @@ * main (int argc, * char *argv[]) * { - * /* GValues must start zero-filled */ - * GValue a = {0}; - * GValue b = {0}; + * /* GValues must be initialized */ + * GValue a = G_VALUE_INIT; + * GValue b = G_VALUE_INIT; * const gchar *message; * * g_type_init (); diff --git a/gobject/gvalue.h b/gobject/gvalue.h index 60c19199d..e1f69806b 100644 --- a/gobject/gvalue.h +++ b/gobject/gvalue.h @@ -161,6 +161,22 @@ void g_value_register_transform_func (GType src_type, */ #define G_VALUE_NOCOPY_CONTENTS (1 << 27) +/** + * G_VALUE_INIT: + * + * A #GValue must be initialized before it can be used. + * This macro can be used as initializer instead of an explicit + * { 0 } when declaring a variable, + * but it cannot be assigned to a variable. + * + * |[ + * GValue value = G_VALUE_INIT; + * ]| + * + * Since: 2.30 + */ +#define G_VALUE_INIT { 0, { { 0 } } } + G_END_DECLS