О чем говорит это утверждение? - PullRequest
1 голос
/ 27 марта 2009
struct ast_channel *(* const requester)(const char *type, int format, void *data, int *cause);

Что означает эта строка?

Второй вопрос: в чем преимущество использования

static struct hello
{
    int a;
    chat b;
};

просто

struct hello
{
    int a;
};

Кроме того, в чем разница между static char p[] и char p[];?

Ответы [ 5 ]

5 голосов
/ 27 марта 2009

Мой C немного ржавый: запрашивающий является постоянным указателем на функцию, возвращающую указатель на структуру ast_channel.

См. Эти статьи:

Что означает статическое ключевое слово, зависит от того, где объявление появляется в коде. Внутри функции это указывает, что переменная не должна быть помещена в стек, но в сегмент данных и является постоянной, когда функция выходит из области видимости (т.е. не работает). За пределами функции это означает, что переменная недоступна вне файла, в котором она находится.

4 голосов
/ 27 марта 2009

Обучение рыбам (вместо того, чтобы давать рыбу):

Чтение объявлений типа C

Что означает статическое в программе на C

1 голос
/ 27 марта 2009

Первое - это объявление (а также определение) постоянного указателя на функцию, которая возвращает указатель на struct ast_channel и принимает параметры, перечисленные в последней паре паратезов. Указатель этой функции называется requester.

Значение static на самом деле зависит от контекста. Однако это было объяснено в предыдущих ответах.

0 голосов
/ 11 августа 2011

cdecl.org Ваш друг здесь:

struct ast_channel *(* const requester)(const char *, int , void *, int *) - объявить запросчик как постоянный указатель на функцию (указатель на const char, int, указатель на void, указатель на int), возвращающий указатель на struct ast_channel
0 голосов
/ 27 марта 2009

Первая строка - это указатель на функцию типа ast_channnel. Для адекватного объяснения его использования потребуется предоставить больше кода. Это было определено внутри структуры? Если это так, он будет введен через structname-> Requestter (... Args ...).

Этот урок может помочь вам разобраться в этом. Другие ссылки уже были предоставлены, чтобы выяснить, что означает «статический».

...