Вызов функции по указателю

Тема в разделе "LANGS.C", создана пользователем featurelles, 29 янв 2010.

  1. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Задача весьма проста. Нужно вызвать определённую функцию, указатель на которую занесён в некую структуру.

    Код (Text):
    1. /* Некая структура */
    2. struct my_struct
    3. {
    4. int num; // переменная поставлена от болды!!
    5. int (*func) (struct aaa *a_ptr, struct bbb *b_ptr, struct ccc *c_ptr, ddd *d_ptr); // указатель на функцию, которую нужно вызвать
    6. }
    7.  
    8.  
    9. /*
    10. my_struct_ptr  это указатель на заполненную структуру "struct my_struct"
    11. func = адресу функции которую нужно вызвать.
    12. */
    13. struct my_struct *my_struct_ptr;
    14.  
    15.  
    16. // Пробую вызвать функцию
    17. my_struct_ptr->func( a_ptr,  b_ptr,  c_ptr,  d_ptr );
    Подобный вызов функции, у меня приводит к краху системы. (я задолбался уже комп ребутать)

    Мне нужно знать, правильно ли я делаю вызов функции :)
    Спасибо.
     
  2. cupuyc

    cupuyc New Member

    Публикаций:
    0
    Регистрация:
    2 апр 2009
    Сообщения:
    763
    работает.
     
  3. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    cupuyc
    Ок, спасибо cupuyc .
     
  4. cppasm

    cppasm New Member

    Публикаций:
    0
    Регистрация:
    18 июл 2006
    Сообщения:
    923
    Вызов правильный, падает по каким-то другим причинам.
    Например адрес функции неправильный записываешь, или конвенция вызова не соответствует фактической.
     
  5. featurelles

    featurelles New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2009
    Сообщения:
    562
    Тема уже не актуальна, меня интересовало только то, правилен ли синтаксис вызова.
    Дальше уже сам, так как врятли кто-то поможет. Так как это маленький участок кода, внедряющийся в "глючную программу" которая работает на уровне ядра linux . Эта "глючная программа" много чего делает, видимо что-то изменяет... буду проблему дальше по шагам искать.