【发布时间】:2020-05-18 14:32:30
【问题描述】:
在使用我不理解的不同 GLib 版本时,将 g_autoptr() 与 G_DEFINE_AUTOPTR_CLEANUP_FUNC() 一起使用有些东西(这也会影响其他 g_auto... 变体及其 G_DEFINE)。
"清理类型的方式一定已经用宏定义过了 G_DEFINE_AUTOPTR_CLEANUP_FUNC()"
当使用例如 GLib 2.62 和使用 G_DEFINE 宏时,这会导致类似的错误
/usr/include/glib-2.0/glib/gmacros.h:1032:49: error: redefinition of ‘glib_slistautoptr_cleanup_GtkTreePath’
1032 | #define _GLIB_AUTOPTR_SLIST_FUNC_NAME(TypeName) glib_slistautoptr_cleanup_##TypeName
省略 G_DEFINE 宏将解决问题,程序运行正常。
但是,在 2.50 等较旧的 GLib 版本(例如,Debian 9 仍在使用)上,使用 G_DEFINE 宏不会导致错误消息。但我看不到 GLib 文档反映的任何更改。我无法确定何时引入了上述行为变化。当我想支持从 2.50 开始的所有 GLib 版本时,我应该如何处理这个问题?
【问题讨论】:
标签: glib