tarjetas tarjeta tag proximidad programar precio mercadolibre llavero funciona control como clonar acceso gcc vala

gcc - tarjeta - Cómo reparar la advertencia: ¿faltan llaves alrededor del inicializador?



tarjetas de proximidad control de acceso (2)

La advertencia es producida por el código c generado por vala.

advertencia: falta llaves alrededor del inicializador

El código funciona pero la advertencia es molesta. El código vala al que hace referencia la advertencia es

struct Position {uint x; uint y;} private static Position positions[8];

El código C generado es

static Position det_positions[8] = {0};

Intenté inicializar posiciones de media docena de maneras diferentes, pero parece que no puedo obtener la sintaxis para satisfacer la advertencia. ¿Es esta la falla GCC 53119 o hay alguna manera de solucionarlo?


Esta advertencia también aparece cuando una matriz multidimensional se trata como una matriz lineal (aunque sigue siendo correcta y el código se ejecuta a la perfección) con los indicadores de compilador de pared establecidos.

Por ejemplo

char array[5][10][2] = {/ "0","0","0","0","0","0","0","0","0","0",/ "1","1","1","1","1","1","1","1","1","1",/ "2","2","2","2","2","2","2","2","2","2",/ "3","3","3","3","3","3","3","3","3","3",/ "4","4","4","4","4","4","4","4","4","4" };

Esto generará la advertencia.

Realice los siguientes cambios para eliminar las advertencias, como se muestra a continuación

char array[5][10][2] = {/ {"0","0","0","0","0","0","0","0","0","0" },/ {"1","1","1","1","1","1","1","1","1","1"},/ {"2","2","2","2","2","2","2","2","2","2"},/ {"3","3","3","3","3","3","3","3","3","3"},/ {"4","4","4","4","4","4","4","4","4","4"} };

Por favor corrígeme si estoy equivocado.


Sí, esto parece estar relacionado con la falla 53119 de GCC . Desaparece si cambias la declaración de C a {{0}} . Tus opciones son:

  1. Ignora la advertencia.
  2. Manipule el código C después de la generación para que tenga {{0}} lugar de {0} en esa línea usando sed o similar.
  3. Declara la matriz extern en Vala y escribe la definición de C en otro lugar. (La versión permanente de # 2.)
  4. Haz algo como struct foo { int bar; Position positions[8]; } static foo position_holder struct foo { int bar; Position positions[8]; } static foo position_holder struct foo { int bar; Position positions[8]; } static foo position_holder y {0} inicializarán position_holder.bar que está bien y la advertencia desaparece.