[英]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.