¿Cómo inicializar un arreglo que está declarado dentro de una estructura?
Estaba desarrollando un programa en C para leer el estado de acceso a una puerta. Creé una estructura en la que se declararon dos arreglos. Quería inicializar el arreglo en el momento de la definición de esa estructura.
Por ejemplo,
Declaración de estructura en el archivo .h:
typedef volatile struct
{
uint8_t __near const * const people_in_input_ports[8];
uint8_t __near const * const people_out_input_ports[8];
} GATE_ACCESS_CTRL_BLOCK;
Definición de estructura en el archivo .c:
GATE_ACCESS_CTRL_BLOCK g_gate_acc_parameters = {
.people_in_input_ports = {&P12, &P4, &P4, &P4, &P6, &P6, &P6, &P6},
.people_out_input_ports = {&P14, &P14, &P2, &P14, &P14, &P5, &P5, &P1}
};
Aquí, P12, P4, P6, P5, P2 y P14 son direcciones sfr del puerto correspondiente.
Obtuve el siguiente error.
E0520029: Se esperaba una expresión
E0520029: Se esperaba una expresión
¿Cómo se inicializan los arreglos que se declaran dentro de una estructura usando el nombre de los arreglos?
davy.ai
Para inicializar arrays que se declaran dentro de una estructura utilizando el nombre de los arrays, debes modificar la declaración de la estructura como sigue:
Luego, puedes inicializar la estructura en el archivo .c utilizando los nombres de los arrays de la siguiente manera:
Ten en cuenta que también necesitas declarar como variables constantes las direcciones de los puertos sfr correspondientes. En este ejemplo, las direcciones de los puertos sfr se definen como
P12
,P4
,P6
,P5
,P2
yP14
.