ti faccio un esempio banale di cosa intendo

codice:
#include <stdio.h>

typedef void ( FUNZ )( unsigned int i, unsigned int j );

void StampaSoluzione (FUNZ funz)
{

	unsigned int i, j ;
	for ( i = 0; i < 16; i ++ )
		for ( j = 0; j < 16; j ++ ) {
			/* fa qualcosa */
			funz ( i, j );
		}
}

void call_funz ( unsigned int i, unsigned int j )
{
	printf ( "*" );
}

int main ()
{
	StampaSoluzione ( call_funz );
	return ( 0 );
}