Black imp
08-10-2003, 17:18
voglio inizializzare un menù sotto le glut - non ha importanza quali librerie uso -. in pratica devo eseguire la seguente istruzione:
glutAddMenuEntry(LIGHT_MENU_ENTRY_NAME_1,LIGHT_MENU_ENTRY_1);
glutAddMenuEntry(LIGHT_MENU_ENTRY_NAME_2,LIGHT_MENU_ENTRY_2);
glutAddMenuEntry(LIGHT_MENU_ENTRY_NAME_3,LIGHT_MENU_ENTRY_3);
...
ho pensato di creare una macro parametrica e di infilarla in un ciclo for
#define ADD_MENU_ENTRY(j) \
glutAddMenuEntry (LIGHT_MENU_ENTRY_NAME##j,LIGHT_MENU_ENTRY##j);
ora se eseguo le singole ADD_MENU_ENTRY(1) ADD_MENU_ENTRY(2) ecc. tutto funziona. non posso però mettere tutto in un ciclo for:
for (i=0;i<MAX_ENTRY;i++)
{
ADD_MENU_ENTRY(i);
}
se lo faccio mi sostituisce il simbolo i nella macro e non il suo valore. eppure so che ero riuscito a compattare tutto in una istruzione una volta. c'è un modo di eseguire un ciclo for dentro la macro stessa o un altro stratagemma di passare alla macro una variabile?
:muro:
eppure so che si può fare qualcosa per evitare quella fila di istruzioni!! cazzarola
:mad: :mad: :mad: :rolleyes:
glutAddMenuEntry(LIGHT_MENU_ENTRY_NAME_1,LIGHT_MENU_ENTRY_1);
glutAddMenuEntry(LIGHT_MENU_ENTRY_NAME_2,LIGHT_MENU_ENTRY_2);
glutAddMenuEntry(LIGHT_MENU_ENTRY_NAME_3,LIGHT_MENU_ENTRY_3);
...
ho pensato di creare una macro parametrica e di infilarla in un ciclo for
#define ADD_MENU_ENTRY(j) \
glutAddMenuEntry (LIGHT_MENU_ENTRY_NAME##j,LIGHT_MENU_ENTRY##j);
ora se eseguo le singole ADD_MENU_ENTRY(1) ADD_MENU_ENTRY(2) ecc. tutto funziona. non posso però mettere tutto in un ciclo for:
for (i=0;i<MAX_ENTRY;i++)
{
ADD_MENU_ENTRY(i);
}
se lo faccio mi sostituisce il simbolo i nella macro e non il suo valore. eppure so che ero riuscito a compattare tutto in una istruzione una volta. c'è un modo di eseguire un ciclo for dentro la macro stessa o un altro stratagemma di passare alla macro una variabile?
:muro:
eppure so che si può fare qualcosa per evitare quella fila di istruzioni!! cazzarola
:mad: :mad: :mad: :rolleyes: