问题描述
在 GLib 的 GType 子系统中注册了大量基本类型(GLib 的源文件 gvaluetypes.c
如下):
/* --- type initialization --- */
void
_g_value_types_init (void)
{
GTypeInfo info = {
0,/* class_size */
NULL,/* base_init */
NULL,/* base_destroy */
NULL,/* class_init */
NULL,/* class_destroy */
NULL,/* class_data */
0,/* instance_size */
0,/* n_preallocs */
NULL,/* instance_init */
NULL,/* value_table */
};
const GTypeFundamentalInfo finfo = { G_TYPE_FLAG_DERIVABLE,};
GType type G_GNUC_UNUSED /* when compiling with G_DISABLE_ASSERT */;
/* G_TYPE_CHAR / G_TYPE_UCHAR
*/
{
static const GTypeValueTable value_table = {
value_init_long0,/* value_init */
NULL,/* value_free */
value_copy_long0,/* value_copy */
NULL,/* value_peek_pointer */
"i",/* collect_format */
value_collect_int,/* collect_value */
"p",/* lcopy_format */
value_lcopy_char,/* lcopy_value */
};
info.value_table = &value_table;
type = g_type_register_fundamental (G_TYPE_CHAR,g_intern_static_string ("gchar"),&info,&finfo,0);
g_assert (type == G_TYPE_CHAR);
type = g_type_register_fundamental (G_TYPE_UCHAR,g_intern_static_string ("guchar"),0);
g_assert (type == G_TYPE_UCHAR);
}
…
…
…
我想知道为什么没有使用 instance_size
结构的 info
?基本类型没有/使用任何“实例大小”吗?我打算使用这个子系统来注册一些类型,
包括基本的,我想知道我是否应该指定,
例如:8
代表 instance_size
代表 gint64
-等效类型?
一般来说,指定基本类型的真实大小有什么问题?应该不会有什么危害吧?如果是,那么为什么 GLib 不使用此功能?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)