GLib:C: 如何打印 GValue

GLib:C: How do I print a GValue

如果我在编译时不知道它的类型,我如何g_print一个GValue

g_print 格式字符串是否有某种特殊的格式字符?

取决于你想用什么格式打印它。如果你真的不关心格式,你可以使用 g_value_transform() 将值转换为第二个 GValue 已经初始化类型为 G_TYPE_STRING.

如果您确实关心格式,则需要有一个多分支 if 语句来比较 GValueG_VALUE_TYPE() 的值与许多不同的 GType秒。在每个 if 块的主体中​​,您都有特定于类型的打印代码。

您可以使用 g_strdup_value_contents:

gchar * strVal = g_strdup_value_contents (&gvalue);
g_print ("gvalue: %s\n", strVal);
free (strVal);