glib-genmarshal的使用

g_closure_marshal提供了一些常用的closure的实现,但是由于返回值和参数列表的可能性实在太多,无法穷举,所以,gobject提供了一个程序:glib-genmarshal来帮我们生成指定的closure的实现(自动生成代码)。 

在当前目录下创建一个文件,比如:marshal.list,包含内容如下: 

VOID:UINT,UINT 

就是返回值和参数列表。然后: 

glib-genmarshal --header --prefix=gst_play_marshal marshal.list 

这样就生成了头文件的内容,保存下来存成gstplay-marshal.h,搞定。 

glib-genmarshal --body --prefix=gst_play_marshal marshal.list 

生成了.c文件的内容,保存成gstplay-marshal.c,搞定。在这个.c的第一行再添加一句:#include "gstplay-marshal.h",这句不会自动生成。 

这样就有了gst_play_marshal_VOID__UINT_UINT这个函数了,easy。

你可能感兴趣的:(marshal)