这种类型的意思是什么?

时间:2012-02-17 04:12:23

标签: c typedef

我是C的新手,这种typedef对我来说有点奇怪。有人可以解释它的作用吗?

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

它位于头文件中。

5 个答案:

答案 0 :(得分:7)

您可以使用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,而不是声明。

答案 1 :(得分:4)

它将alpm_cb_log定义为指向函数的指针的类型,该函数接受参数alpm_loglevel_t, const char *, va_list并返回void

答案 2 :(得分:4)

一个简单的例子。 声明:

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的一般规则是写出声明,就好像 你正在声明你想要的类型的变量

答案 3 :(得分:3)

如果你以前从未见过它们,那看起来很奇怪。对于返回void的函数的指针,它是一个typedef alpm_cb_log,带有两个或多个参数:alpm_loglevel_tconst char *和变量参数列表。

答案 4 :(得分:2)

它创建了alais alpm_cb_log,它是一个指向函数的指针,该函数返回void并且需要三个参数。 1. alpm_loglevel_t 2. const char *。 3 a varaibale参数列表。