GOOGLE ADS

martes, 3 de mayo de 2022

¿Cómo inicializo una estructura en C?

Recibí un comentario sobre cómo inicializo mi estructura en C, diciendo que no funciona y tampoco compila.

Así es como creo e inicializo una estructura en C.

struct {
int a;
int b;
char arr[3];
.
.
.
} data = {
.a = 1,
.b = 2
};
main(){
/* do stuff */
}

Así es como inicializo mi estructura y funciona y compila. Sin embargo, recibí un comentario que decía que esto se compilaría para c ++ pero no para C. ¿Alguien puede asegurarme que esta alternativa es correcta? Si no, ¿por qué está compilando sin errores?


Solución del problema

Creo que hay un error tipográfico en la declaración del miembro de datos arr. En vez de

char [3]arr;

tu tienes que escribir

char arr[3];

No puede inicializar una matriz con llaves vacías. Así que escribe por ejemplo

struct {
int a;
char arr[3];
.
.
.
} data = {
.a = 1,
.arr = { 0 }
};

De hecho, es suficiente para escribir

struct {
int a;
char arr[3];
.
.
.
} data = {
.a = 1
};

La matriz implícitamente se inicializará con ceros.

No hay comentarios:

Publicar un comentario

Regla de Firestore para acceder a la generación de subcolección Permisos faltantes o insuficientes

Tengo problemas con las reglas de Firestore para permitir el acceso a algunos recursos en una subcolección. Tengo algunos requests document...