I have written a few blocks of _Generic code, but there seems to be a few errors.The code is written in a file which is included in 3 other files and the three files are incluled in the main file. The errors:
D:\Data\Projects\4. Progetto di Tirana - #2\main.c:7:
D:\Data\Projects\4. Progetto di Tirana - #2\amministratoreFile.c: In function 'startAmm':
D:\Data\Projects\4. Progetto di Tirana - #2\strfnx.c:84:37: error: expected specifier-qualifier-list before ')' token
84 | )(lista)
D:\Data\Projects\4. Progetto di Tirana - #2\amministratoreFile.c:20:3: note: in expansion of macro 'scaricaDati'
20 | scaricaDati(&dati);"
In the other lines the code is similar just the number of the line changes. A few examples where I use the code:
void aggiungiProf(){
struct professore *lista, dati;
scaricaDati(&lista);
dati.ID = lunghezzaLista(lista);
dati.stato = 1;
printf("Inserisci il userName(nome+cognome) del professore da aggingere:\n");
scanf("%s", dati.userName);
strcpy(dati.passWord, (char*)generaPass(dati.ID, dati.userName));
inserisci_in_coda(&lista, &dati);
caricaCambiamenti(lista);
}
Here is the code:
#define confermaCredenziali(credenziali, uN, pW) _Generic((credenziali), \
struct amministratore* : confermaCredenzialiAmm, \
struct professore* : confermaCredenzialiProf, \
struct studente* : confermaCredenzialiStud \
)(credenziali, uN, pW)
#define visualizza(lista) _Generic((lista), \
struct amministratore* : visualizzaAmmin, \
struct professore* : visualizzaProf, \
struct studente* : visualizzaStud \
)(lista)
#define caricaCambiamenti(lista) _Generic((lista), \
struct amministratore* : caricaCambiamenti_Ammin, \
struct professore* : caricaCambiamenti_Prof, \
struct studente* : caricaCambiamenti_Stud, \
)(lista) //Here too
#define scaricaDati(lista) _Generic((lista), \
struct amministratore** : scaricaDatiAmmin, \
struct professore** : scaricaDatiProf, \
struct studente** : scaricaDatiStud, \
)(lista) //Line were the error occurs
#define inserisci_in_coda(lista, dati) _Generic((lista), \
struct amministratore** : inserisci_in_coda_Ammin, \
struct professore** : inserisci_in_coda_Prof, \
struct studente** : inserisci_in_coda_Stud, \
)(lista) // Here too
#define lunghezzaLista(lista) _Generic((lista) , \
struct amministratore* : lunghezzaLista_Ammin, \
struct professore* : lunghezzaLista_Prof, \
struct studente* : lunghezzaLista_Stud, \
)(lista) // Here