I can't understand the argument, i've seen it for the 1st time.
below is the structure:
typedef struct node{
void* dataPtr;
struct node* left;
struct node* right;
}NODE;
typedef struct{
    int count;
    int (*compare)(void* argu1, void* argu2);
    NODE* root;
}BST_TREE;
This is Prototype:
BST_TREE* BST_Create(int (*compare)(void* argu1, void* argu2));
This is Function:
BST_TREE* BST_Create(int (*compare)(void* argu1, void *argu2)){
    BST_TREE* tree;
    tree = (BST_TREE*)malloc(sizeof(BST_TREE));
    if(tree){
        tree->root = NULL;
        tree->count = 0;
        tree->compare = compare;
    }
    return tree;
}
