C指针从不兼容的指针类型分配

时间:2016-12-02 15:40:53

标签: c arrays function pointers struct

我有以下代码:

struct DataBase {
    union manip_types *manip;
};

union manip_types{
    void ( *man_insert )( struct DataBase *, struct auto_increment *, enum db_insert_types,... );
    void ( *man_remove )( struct DataBase *, struct auto_increment *, enum db_remove_types, int );
    void ( *man_update )( struct DataBase *, enum db_update_types, int,... );
    union db_query_union ( *man_query )( struct DataBase *, enum db_query_types, int );
    struct db_query_extended ( *man_query_ex )( struct DataBase *, struct auto_increment *, enum db_query_types,... )
};

然后我做了:

db->manip = malloc( 5 * sizeof( union manip_types ) );
    db->manip[ 0 ].man_insert = &db_insert;
    db->manip[ 1 ].man_remove = &db_remove;
    db->manip[ 2 ].man_update = &db_update;
    db->manip[ 3 ].man_query = &db_query;
    db->manip[ 4 ].man_query_ex = &db_query_ex;

上面的代码为每个[0,1, - >]生成以下警告: 4]

Assignment from incompatible pointer type.

功能原型:

void db_insert( struct DataBase *db, struct auto_increment *a_i, enum db_insert_types db_insert_type,... )
void db_remove( struct DataBase *db, struct auto_increment *a_i, enum db_remove_types db_remove_type, int removeId )
void db_update( struct DataBase *db, enum db_update_types db_update_type, int upId,... )
union db_query_union db_query( struct DataBase *db, enum db_query_types db_query_type, int queryId )
struct db_query_extended db_query_ex( struct DataBase *db, struct auto_increment *a_i, enum db_query_types db_query_type,... )

我应该修改什么?我怎么能调用那个指针数组?例如,v [4]。

0 个答案:

没有答案
相关问题