c代码中的括号是什么意思?

What do the parentheseses mean in the c code?

我连c语言初学者都算不上

我看到了来自 cpython 源代码的代码:

typedef struct _formatdef {
    char format;
    Py_ssize_t size;
    Py_ssize_t alignment;
    PyObject* (*unpack)(_structmodulestate *, const char *,
                        const struct _formatdef *);
    int (*pack)(_structmodulestate *, char *, PyObject *,
                const struct _formatdef *);
} formatdef;

在第 5 行,我知道 PyObject* 定义了一个指向 PyObject 类型变量的指针,但是 (*unpack) 是什么意思?下面的 (_structmodulestate *) 是什么意思?

这是一个函数指针声明。

这个:

float x;

声明一个类型为 float 的变量,名称为 x

这个:

float *p;

声明了一个名为 p.

float* 类型的变量(指向 float 的指针)

这个:

int foo(float *p);

声明了一个名为 foo 的函数,它接受一个 float* 作为参数,returns 一个 int.

这个:

PyObject* (*unpack)(_structmodulestate *, const char *, const struct _formatdef *);

声明了一个名为unpack的函数指针,它指向一个以三个指针(各种类型)为参数的函数,并且returns一个PyObject*.