GLib:C: 如何打印 GValue
GLib:C: How do I print a GValue
如果我在编译时不知道它的类型,我如何g_print
一个GValue
?
g_print
格式字符串是否有某种特殊的格式字符?
取决于你想用什么格式打印它。如果你真的不关心格式,你可以使用 g_value_transform()
将值转换为第二个 GValue
已经初始化类型为 G_TYPE_STRING
.
如果您确实关心格式,则需要有一个多分支 if
语句来比较 GValue
的 G_VALUE_TYPE()
的值与许多不同的 GType
秒。在每个 if
块的主体中,您都有特定于类型的打印代码。
您可以使用 g_strdup_value_contents
:
gchar * strVal = g_strdup_value_contents (&gvalue);
g_print ("gvalue: %s\n", strVal);
free (strVal);
如果我在编译时不知道它的类型,我如何g_print
一个GValue
?
g_print
格式字符串是否有某种特殊的格式字符?
取决于你想用什么格式打印它。如果你真的不关心格式,你可以使用 g_value_transform()
将值转换为第二个 GValue
已经初始化类型为 G_TYPE_STRING
.
如果您确实关心格式,则需要有一个多分支 if
语句来比较 GValue
的 G_VALUE_TYPE()
的值与许多不同的 GType
秒。在每个 if
块的主体中,您都有特定于类型的打印代码。
您可以使用 g_strdup_value_contents
:
gchar * strVal = g_strdup_value_contents (&gvalue);
g_print ("gvalue: %s\n", strVal);
free (strVal);