2012-02-17 52 views
4

我是C新手,這個typedef看起來有點奇怪。有人可以解釋它的作用嗎?這個typedef是什麼意思?

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

它在一個頭文件中。

回答

4

一個簡單的例子。 聲明:

typedef int myint. 

用途:

myint number = 7; 

敏是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

這些看起來很奇怪,如果你以前從未見過它們。這是一個typedef alpm_cb_log,用於指向返回void的函數的指針,其中包含兩個或更多參數:一個alpm_loglevel_t,一個const char *和一個可變參數列表。

4

它將alpm_cb_log定義爲指向函數的指針的類型,該函數接受參數alpm_loglevel_t, const char *, va_list並返回void

2

它創建了alais alpm_cb_log,它是一個返回void並帶有三個參數的函數的指針。 1.一個alpm_loglevel_t 2.常量字符*。 3一個varaibale參數列表。