Qual è il modo migliore per eseguire quanto segue in C?Inizializzazione di una struttura globale in C
#include <stdio.h>
struct A
{
int x;
};
struct A createA(int x)
{
struct A a;
a.x = x;
return a;
}
struct A a = createA(42);
int main(int argc, char** argv)
{
printf("%d\n", a.x);
return 0;
}
Quando provo a compilare il codice di cui sopra, il compilatore segnala il seguente errore:
"elemento inizializzatore non è costante"
La linea cattiva è questa:
struct A a = createA(42);
Qualcuno può spiegare cosa c'è che non va? Non ho molta esperienza in C. Grazie!
Plus: non è possibile chiamare le funzioni per inizializzare staticamente i dati. Questo è ciò che il tuo errore del compilatore sta cercando di dirti. – BjoernD
Va bene, ma cosa succede se ho bisogno di nidificare le inizializzazioni? Ad esempio, diciamo che una struttura B ha una A in essa. Posso inizializzare staticamente B con un A inizializzato staticamente? cioè struttura B b = createB (createA (42)) – Scott
Ah, non importa. L'avevo capito. Apparentemente posso solo fare: struct B b = {{42}}; Bello! – Scott