Ho in una funzione 8 blocchi di codice di circa 50 righe ciascuno, esattamente identici, tranne che per un parametro iniziale:

if (sc->x!=sca->x+1 || sc->y!=sca->y) {
..blocco identico

if (sc->x!=sca->x-1 || sc->y!=sca->y) {
..blocco identico

if (sc->x!=sca->x || sc->y!=sca->y+1) {
..blocco identico

.
.
.
.
e via dicendo,per 8 volte, fino a coprire tutto l' intorno del punto (x,y)

Vorrei passare il valore di sca-> (che è quello che varia) come parametro di un' altra funzione, in modo da scrivere una volta il codice e richiamare 8 volte la funzione con parametro differente.

La struttura a cui appartiene *sca è fatta così


typedef struct NODE {

int x;
int y;
struct QUEUE *succ;
}NODO;


Se volessi affidare il codice ripetitivo ad una funzione chiamata INTORNO, come dovrebbe esserne il prototipo, contando che al momento dell' utilizzo dovrebbe essere:

INTORNO (x+1,y);
INTORNO (x-1,y);
INTORNO (x,y+1);
INTORNO (x,y-1);
INTORNO (x-1,y+1);
INTORNO (x+1,y+1);
INTORNO (x-1,y-1);
INTORNO (x+1,y-1);

e a seconda del parametro dovrebbe mettermi il valore giusto a destra di sca->



Spero di essere stato chiaro

Grazie

Ciao