Obviously this doesn't change anything.

This is the modified code:
Code:
// 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