【问题标题】:what is this typedef achieveing in cpython/Include/object.h这个 typedef 在 cpython/Include/object.h 中实现了什么
【发布时间】:2019-12-13 04:59:49
【问题描述】:

通常 typedef 的作用是

typedef DATATYPE NEW_NAME

但是,以下内容有点复杂,并且似乎与其他一些概念混合在一起(例如 tuple-alike guy)

typedef PyObject *(*newfunc)(struct _typeobject *, PyObject *, PyObject *);

【问题讨论】:

标签: python c cpython


【解决方案1】:

这个定义看起来很混乱,因为函数指针起初很混乱。定义

typedef PyObject *(*newfunc)(struct _typeobject *, PyObject *, PyObject *);

意思是“创建一个名为newfunc的typedef,它是一个接收struct _typeobject*和两个PyObject*s并返回PyObject*的函数。该名称位于中间的返回类型之后,就像使用常规函数定义一样:

PyObject *somefunc(struct _typeobject *, PyObject *, PyObject *);

因为它是一个函数指针,它需要括号和另一个 * 来表明它是一个指针,并且数据类型在名称周围。

【讨论】:

  • 为什么我们需要 (*newfunc) 而不是 newfunc?
  • @SamiKuhmonen 所以函数 typedef 的语法不同于数据类型 typedef?因为这里我们就像定义一个变量,它接受一个函数作为它的值,并且这个函数的原型必须匹配类型的定义
猜你喜欢
  • 2022-08-09
  • 2021-07-09
  • 1970-01-01
  • 1970-01-01
  • 2022-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多