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