[英]What does this typedef mean?
我是C的新手,这种typedef对我来说有点奇怪。 有人可以解释它的作用吗?
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
它位于头文件中。
您可以使用cdecl.org: http://cdecl.ridiculousfish.com/?q=void+%28*alpm_cb_log%29%28alpm_loglevel_t%2C+const+char+*%2C+va_list%29+
它说:
将alpm_cb_log声明为函数指针(alpm_loglevel_t,指向const char的指针,va_list)返回void
在这种情况下,它是一个typedef,而不是声明。
它将alpm_cb_log
定义为指向函数的指针的类型,该函数接受参数alpm_loglevel_t, const char *, va_list
并返回void
。
一个简单的例子。 宣言:
typedef int myint.
采用:
myint number = 7;
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的一般规则是写出一个声明,就好像你声明了你想要的类型的变量一样
如果你以前从未见过这些,那看起来很奇怪。 它是一个typedef alpm_cb_log
用于指向返回void的函数的指针,它带有两个或多个参数: alpm_loglevel_t
, const char *
和变量参数列表。
它创建了alais alpm_cb_log,它是一个指向函数的指针,该函数返回void并占用三个参数。 1. alpm_loglevel_t 2. const char *。 3一个varaibale参数列表。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.