Помимо того факта, что CAKE не является правильным шестнадцатеричным значением, поскольку K не является допустимым шестнадцатеричным символом, плюс любые проблемы, связанные с различными типами указателей, ваша главная ошибка заключается в том, что FunctionName является переменной, а не типом.Это похоже на выполнение
px = (px)0xBADFACE
;
, где px - обычный указатель
Если вы удалите FunctionName справа, оставляя остальные, это может сработать, но проще будетtypedef.
typedef int( *FuncType)(int arg1, long arg2, char * arg3 );
FuncType FunctionName = (FuncType)(0xCAFE);