Attualmente sto imparando sulla struttura dati struct
in C e su come è possibile preimpostare questa struttura con la parola chiave typedef
. Questo fa sì che i nomi delle variabili della struttura effettiva da collocare in spazi di nomi diversi come spiegato in parecchi riferimenti diversi:struct senza typedef parola chiave
Difference between 'struct' and 'typedef struct' in C++?
typedef struct vs struct definitions
Tuttavia, non è chiaro da quanto accade con l'esempio che sto lavorando con:
#include <stdio.h>
struct demo
{
short low_pass_vcf;
short filter_coupler;
short reverb;
short sequential;
} synth;
int main()
{
printf("Size of struct: %i\n", sizeof(struct demo));
printf("Size of struct: %i\n", sizeof(synth));
return 0;
}
In questo esempio, sono in grado di accedere alla struttura dei dati struct
attraverso la variabile synth
nome; tuttavia, negli esempi che ho visto, per poter essere in grado di farlo, è necessario specificare struct
con typedef
. In questo esempio, non viene utilizzato typedef
eppure sono ancora in grado di fare riferimento a questa struttura tramite synth
. Mi chiedo cosa si stia verificando esattamente che C mi sta permettendo di fare questo? Qualsiasi spiegazione sarebbe apprezzata. Saluti.
Conoscete con cosa 'typedef' fa? – ameyCU
'sizeof' produce un risultato di tipo' size_t'. La stringa di formato corretta per un valore 'size_t' è'% zu', non '% i' (che è per' int'). –
Grazie per l'informazione 'size_t'. Da quello che ho capito, ciò che 'typedef' fa è che crea una variabile in uno spazio dei nomi separato che consente di fare riferimento alla struttura senza bisogno di usare' struct demo'. Non sono sicuro se qualcos'altro sta accadendo dietro le quinte. –