Ho riscontrato un problema durante il tentativo di esprimere il puntatore a un tipo all'interno di una macro.Puntatore da digitare all'interno di una macro, C
Prendi questo semplice esempio.
#define INDEX_OF_DATA(data, type, index) \
((type *)data)[index]
questo funziona:
INDEX_OF_DATA(buffer, float, 3);
Dove questo non riesce:
INDEX_OF_DATA(buffer, float[2], 3);
perché il cast dovrebbe essere (float(*)[2])
.
C'è un modo per esprimere "il puntatore di un type
", ... senza usare typeof
? (che non è standard C).
Nota, ci sono naturalmente altri modi per far funzionare questo specifico esempio. cast per char e offset per sizeof(type) * index
per esempio. Ma sono interessati ad un modo per esprimere pointer to type
in C.
Non penso sia possibile senza estensioni, ma sarei curioso di sapere se qualcuno ha un'idea migliore. – zwol
C++ ha una soluzione migliore con l'inferenza di tipo, ma con C la tua scelta è prossima a nessuno – texasbruce