C 这是什么意思?

C 这是什么意思?,c,typedef,C,Typedef,我是C新手,这个typedef对我来说有点奇怪。有人能解释一下它的作用吗 typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list); 它位于头文件中。如果您以前从未见过它们,它们看起来确实很奇怪。它是一个typedefalpm\u cb\u log,用于指向返回void的函数的指针,包含两个或多个参数:一个alpm\u loglevel\u t、一个const char*和一个变量参数列表。您可以使用cdecl.or

我是C新手,这个typedef对我来说有点奇怪。有人能解释一下它的作用吗

typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);

它位于头文件中。

如果您以前从未见过它们,它们看起来确实很奇怪。它是一个typedef
alpm\u cb\u log
,用于指向返回void的函数的指针,包含两个或多个参数:一个
alpm\u loglevel\u t
、一个
const char*
和一个变量参数列表。

您可以使用cdecl.org:

它说:

将alpm_cb_log声明为指向返回void的函数的指针(alpm_loglevel_t,指向const char的指针,va_list)


在本例中,它是一个typedef,而不是一个声明。

它将
alpm\u cb\u log
定义为指向函数的指针的类型,该函数采用参数
alpm\u loglevel\u t,const char*,va_list
并返回
void

它创建alais alpm_cb_日志,该日志是指向返回void并获取三个参数的函数的指针。1.阿尔卑斯山2级。常量字符*。3一个varaibale参数列表。

一个简单的例子。 声明:

typedef int myint.
使用:

myint是int的同义词

你的榜样

typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
这是指向函数的指针

(*alpm_cb_log)
争论是

(alpm_loglevel_t, const char *, va_list)
而且不归还任何东西

void 
使用typedef的一般规则是像
您正在声明您想要的类型的变量。谢谢你的链接。
void