considerare questo pezzo di codiceQual è la differenza tra struttura e ambito della funzione in C?
int main(void)
{
typedef struct {
int i;
} s;
struct {
s s;
} t;
return 0;
}
Si compila bene. Ora date un'occhiata a questa
int main(void)
{
typedef struct {
int i;
} s;
s s;
return 0;
}
Questo codice non compilerà -
‘s’ redeclared as different kind of symbol.
Domanda: Perché è corretto avere "s s;" come dichiarazione all'interno di una struttura, ma non è corretto avere questa definizione all'interno di una funzione?
+1 è buono. Pensi che queste cose sarebbero menzionate in c standard? –
@ Mr.32 Sì, sono menzionati. Penso che siano effettivamente chiamati namespace identificatore lì: * "ogni struttura o unione ha uno spazio separato nome per i suoi membri (disambiguare dal tipo di espressione utilizzata per accedere al membro via o operatore ->.);" * (dal n1547) – user694733