Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

94
Vistas
Advertencia al intentar inicializar una matriz de estructura 2D con dos listas de inicializadores

Estoy tratando de inicializar una matriz 2D de tipo definido por el usuario a cero usando la siguiente línea,

 qmf_t X_hybrid_left[32][32] = {{0}};

Donde qmf_t es un tipo definido por el usuario. Aquí recibo la advertencia del compilador,

advertencia: faltan llaves alrededor del inicializador [-Wmissing-braces]"

Pero si uso, qmf_t X_hybrid_left[32][32] = {{{0}}}; , es decir, 3 llaves a cada lado, la advertencia desaparece.

¿Es correcto usar tres llaves en cada lado? ¿Qué significa?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

qmf_t X_hybrid_left[32][32] = { /* Row initializers next */ { /* Col initializers next */ { /* Struct initializers next */ 0 } } }; qmf_t a = {0}; qmf_t b[5] = {{0}}; qmf_t c[10][5] = {{{0}}};

De las especificaciones C11, 6.7.9 Gramática de inicialización

inicializador:
expresión-asignación
{ lista de inicializadores }
{ lista de inicializadores , }

Aunque en su caso particular (poner a cero todos los objetos de 2 matrices), qmf_t X_hybrid_left[32][32] = {0}; funcionará igual que qmf_t X_hybrid_left[32][32] = {{{0}}}; pero el compilador puede advertirle.

Pero si desea una inicialización distinta de cero, debe usar varias llaves.

De la misma sección:

[16] De lo contrario, el inicializador para un objeto que tiene un tipo agregado o unión será una lista de inicializadores entre llaves para los elementos o miembros nombrados.

[20] Si el agregado o unión contiene elementos o miembros que son agregados o uniones, estas reglas se aplican recursivamente a los subagregados o uniones contenidas. Si el inicializador de un subagregado o unión contenida comienza con una llave izquierda, los inicializadores encerrados por esa llave y su llave derecha coincidente inicializan los elementos o miembros del subagregado o la unión contenida. De lo contrario, solo se toman en cuenta suficientes inicializadores de la lista para los elementos o miembros del subagregado o el primer miembro de la unión contenida; los inicializadores restantes se dejan para inicializar el siguiente elemento o miembro del agregado del que forma parte el subagregado actual o la unión contenida.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda