// Prototypes for overloaded function
AVL_ELEM *avlElem_create(int i_key, void *p_data);
AVL_ELEM *avlElem_create(STRING *str_key, void *p_data);
/*
* ...
*/
avlElem_create((int)12, data); // first function gets called
avlElem_create((STRING*)str_create("hello"), data); // first function gets called again