реклама на сайте
подробности

 
 
> указатель на функцию, непонятно
TigerSHARC
сообщение Aug 31 2012, 19:54
Сообщение #1


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



есть код

CODE
//! Command processing function
typedef tBool (* FuncCmd)( some_struct * p, char * pArg );


//! Command description
typedef struct tagPARSE_cmd {
const char * p; //!< command name
FuncCmd func; //!< command functions
} tPARSE_cmd;


затем происходит вызов

CODE
func(x,y);



Непонятно где тело функции func и что в ней происходит.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
_Артём_
сообщение Aug 31 2012, 20:38
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(TigerSHARC @ Aug 31 2012, 22:54) *
затем происходит вызов

CODE
func(x,y);

И что вызов действительно происходит?
Компилятор скомпилировал, линкер слинковал?


Цитата(TigerSHARC @ Aug 31 2012, 22:54) *
Непонятно где тело функции func и что в ней происходит.

Судя по тому что вы задаёте такой вопрос, мне кажется что тела функции нет - вы её не определили.
И вызвать так тоже не удастся.

Как-то так попробуте:
Код
tPARSE_cmd Parser;

tBool Cmd1( some_struct * p, char * pArg )
{
// парсинг команды 1
}

tBool Cmd2( some_struct * p, char * pArg )
{
// парсинг команды 2
}

int main()
{
/// bla bla bla - какой-то код
Parser.funk=Сmd1;
tBool parsing_result=Parser.funk(A, B);
if (parsing_result) {
  // bla bla bla - какой-то код
}
  /// bla bla bla - какой-то код
  Parser.funk=Сmd2;
parsing_result=Parser.funk(C, D);
if (parsing_result) {
  // bla bla bla - какой-то код
}
}


PS- Offtop - не пойму в чём сермяга, писать так
Код
typedef struct tagPARSE_cmd {
    const char       * p;    //!< command name
    FuncCmd    func;    //!< command functions
} tPARSE_cmd;

чем хуже писать так:
Код
struct tPARSE_cmd {
    const char       * p;    //!< command name
    FuncCmd    func;    //!< command functions
};

?
Go to the top of the page
 
+Quote Post
TigerSHARC
сообщение Sep 1 2012, 05:05
Сообщение #3


Знающий
****

Группа: Свой
Сообщений: 688
Регистрация: 4-09-09
Пользователь №: 52 195



Цитата(_Артём_ @ Sep 1 2012, 00:38) *
PS- Offtop - не пойму в чём сермяга, писать так
Код
typedef struct tagPARSE_cmd {
    const char       * p;    //!< command name
    FuncCmd    func;    //!< command functions
} tPARSE_cmd;

чем хуже писать так:
Код
struct tPARSE_cmd {
    const char       * p;    //!< command name
    FuncCmd    func;    //!< command functions
};

?



смысл в том что такой код скомпилирует любой компилятор. Это сделано для переносимости. здесь где-то тема была....

P.S. по сабжу спасибо. Надо внимательнее код глянуть. Просто думал какие-то секретв есть, но, видимо тело где-то всё равно должно быть.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 5th August 2025 - 16:55
Рейтинг@Mail.ru


Страница сгенерированна за 0.01411 секунд с 7
ELECTRONIX ©2004-2016