簡體   English   中英

這種類型的意思是什么?

[英]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_tconst char *和變量參數列表。

它創建了alais alpm_cb_log,它是一個指向函數的指針,該函數返回void並占用三個參數。 1. alpm_loglevel_t 2. const char *。 3一個varaibale參數列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM