2009-03-27 5 views
1
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

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

Смотрите эти статьи:

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

0

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

This tutorial может помочь вам понять это. Ссылки уже были предоставлены другими, чтобы узнать, что подразумевает статичность.

1

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

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

0

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

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