我在分析GIOchannel,glib的源代码有人能解释一下吗。

GSource * g_io_create_watch (GIOChannel   *channel,GIOCondition  condition){

  g_return_val_if_fail (channel != NULL, NULL);
  return channel->funcs->io_create_watch (channel, condition); //THIS LINE

}

上面的“这条线”是什么意思?
我试着找出它指向哪个函数,但不明白。
函数位于glib源代码的giochannel.c文件中。
提前谢谢。

最佳答案

GIO库使用面向对象技术,但使用的是纯C语言。
现在,重点是:
channel:指向对象的指针那很容易。
GIOChannel:是指向此channel->funcs对象的虚拟表的指针即指向函数的指针的结构其思想是可能有几个GIOChannel的实现,每个实现都有一个实现该特定类的不同函数表。
GIOChannel:是该对象的channel->funcs->io_create_watch函数的实现。
g_io_create_watch:此表达式调用相关的给定虚函数并返回返回值。
如您所见,public函数GIOChannel只是将调用转发到相应的虚拟函数这是必要的,因为在GObject中,虚拟函数从不被认为是公共的,也就是说,客户机代码不应该直接调用它们。
要了解其工作原理,请查看其中一些函数的特定实现,例如,对于普通的Unix文件,请参见return channel->funcs->io_create_watch (channel, condition)文件,特别是函数g_io_create_watch和结构giounix.c

关于c - 有人可以解释“g_io_create_watch”定义在哪里吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16240602/

10-10 18:02