我是C新手,這個typedef看起來有點奇怪。有人可以解釋它的作用嗎?這個typedef是什麼意思?
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
它在一個頭文件中。
我是C新手,這個typedef看起來有點奇怪。有人可以解釋它的作用嗎?這個typedef是什麼意思?
typedef void (*alpm_cb_log)(alpm_loglevel_t, const char *, va_list);
它在一個頭文件中。
一個簡單的例子。 聲明:
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的一般規則是寫出來的聲明,就好像 你聲明的變量類型要
這些看起來很奇怪,如果你以前從未見過它們。這是一個typedef alpm_cb_log
,用於指向返回void的函數的指針,其中包含兩個或更多參數:一個alpm_loglevel_t
,一個const char *
和一個可變參數列表。
您可以使用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
。
它創建了alais alpm_cb_log,它是一個返回void並帶有三個參數的函數的指針。 1.一個alpm_loglevel_t 2.常量字符*。 3一個varaibale參數列表。
愛該網站。感謝您的鏈接。 – Vache 2012-02-17 04:17:22
呵呵不錯的網站 – Lefteris 2012-02-17 04:19:15