You dereference a function pointer, and then try to assign it to a function (ie. the address of that function) plus one? This makes no sense. What are you trying to accomplish?
The binary + operator is available only for pointers that point to a complete object.
In particular. T* pointer ; pointer + 1 ; requires that T is a complete type - sizeof(T) is known at compile-time.
struct A ;
int main()
{
typedefint function_type( int, int ) ;
function_type* p1 /* = ... */ ;
void* p2 /* = ... */
A* p3 /* = ... */
sizeof( function_type ) ; // *** error - not an object
sizeof( void ) ; // *** error - void is deemed to be an incomplete type
sizeof( A ) ; // *** error - A is an incomplete type
function_type a1[1] ; // *** error
void a2[1] ; // *** error
A a3[1] ; // *** error - A is an incomplete type
p1 + 1 ; // *** error - p1 does not point to an object
p2 + 1 ; // *** error - p2 does not point to a complete object
p3 + 1 ; // *** error - p3 does not point to a complete object
}