2012-02-17 4 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 

Общее правило с использованием ЬурейеЕ, чтобы выписать декларацию, как вы объявляли переменные типов, которые вы хотите

3

Они выглядят странно, если вы их никогда не видели. Это typedef alpm_cb_log для указателя на функцию, возвращающую void, принимая два или более аргумента: alpm_loglevel_t, a const char * и список переменных аргументов.

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, указатель на константный полукокс, va_list) возвращающийся недействительным

в этом случае, это typedef, а не декларация.

+0

Loving, что веб-сайт. Спасибо за ссылку. – Vache

+0

hehe nice website – Lefteris

4

Он определяет alpm_cb_log как тип для указателя на функцию, которая принимает аргументы alpm_loglevel_t, const char *, va_list и возвращает void.

2

создает alais alpm_cb_log, который является указателем на функцию, которая возвращает void и принимает три параметра. 1. alpm_loglevel_t 2. const char *. 3 список аргументов varaibale.