He estado implementando un software de control en lenguaje de programación C. Uno de Los módulos de software representan una tabla de comunicación para algunos propietarios. Protocolo de comunicación. Cada registro en esta tabla tiene un elemento (entre otros) que consta de 8 bits. Este elemento representa las propiedades asociadas a este registro. Cada registro puede tener propiedades dadas a continuación:
reportado, event_logged, time_logged, archivado global
Necesito definir la tabla de comunicación y por razones de legibilidad no lo hago Quiere llenar las propiedades de cada registro con valores 0-31. Mi idea era en primer lugar, defina a continuación las máscaras de bits para bits individuales en las propiedades byte:
#define REPORTED 0x10
#define EVENT_LOGGED 0x08
#define TIME_LOGGED 0x04
#define ARCHIVED 0x02
#define GLOBAL 0x01
Luego quise definir una macro con parámetros que preparen el contenido de las propiedades basadas en valores legibles por humanos
#define Create_properties(reported, event_logged, time_logged, archived, global){ \
(uint8_t)reported | (uint8_t)event_logged | (uint8_t)time_logged | \
(uint8_t)global \
}
El uso planificado está siguiendo. Por ejemplo uno de los registros en la comunicación. la tabla se registrará y se registrará el tiempo, así que escribiré la macro de esta manera
Create_properties(0, EVENT_LOGGED, TIME_LOGGED, 0, 0, 0)
y el resultado esperado es 01100. Me he enfrentado a un problema que no tengo. capaz de compilar este código fuente. Siempre recibo error de compilación "llaves alrededor del inicializador escalar". He estado usando el compilador gcc. Hace Alguien sabe por qué se produce este error? Gracias por cualquier idea.