2016-12-02 8 views
-1

У меня есть небольшая проблема с языком C.Функциональный указатель с несколькими аргументами

Im tryin, чтобы сделать указатель на функцию с несколькими аргументами (structs и variable).

Мой прототип функции:

void db_insert(
    struct DataBase *db, 
    struct auto_increment *a_i, 
    enum db_insert_types db_insert_type, 
    ... 
); 

и указатель определяется как:

void (*fct)(
    struct DataBase *db, 
    struct auto_increment *a_i, 
    enum db_insert_types db_insert_type, 
    ... 
); 

я использовать указатель, как:

int main() { 
    struct DataBase db; 
    struct auto_increment a_i; 


    void (*fct)(struct DataBase *db, struct auto_increment *a_i, enum db_insert_types db_insert_type,...); 
    fct = &db_insert; 

    (*fct)(&db, &a_i, db_insert_modele, 1, 2, 3, "asd", "dan", "mere"); 

    db_initiate(&db, &a_i); 

    db_free_mem(&db); 

    return 0; 
} 

Это вызывает мое приложение к «Stop Работа "

Что я делаю неправильно?

+1

"* Но указатель заставляет мою программу сбой. *", Возможно, нет, но как она используется, что вы делаете * не * покажите нам. – alk

+0

Что вы подразумеваете под "делает мою программу аварии"? Вы получаете сбой при вызове функции через указатель? Как выглядит код для назначения указателя и вызова функции? –

+0

Редактировать: вы были правы, вызов указателя вызывает сбой –

ответ

1

Решенный, проблема не имела ничего общего с указателем функции. Проблема заключалась в том, что db_insert вызывался до db_initiate.