Teniendo una variable en una estructura que se llame:
estructura.variable;
Si meto esa variable en una iteraccion para calcular un valor, da fallo. Por ejemplo:
Aqui se intenta calcular un CRC sobre 11 bytes. Su resultado es al azar, da lo que quiere. No funciona.
char name_sum[11] = {"1234567890"};
estructura.variable = 0;
for(int i=0;i<11 && name_sum[i];i++) // Recorremos el array name_sum hasta encontrar (null) o hasta que recorra 11 bytes.
estructura.variable = ((estructura.variable >> 1) | ((estructura.variable & 0x01) << 7)) + name_sum[i];
Ahora en cambio si lo hago de la siguiente forma funciona perfectamente:
char name_sum[11] = {"1234567890"};
uint8_t variable = 0;
for(int i=0;i<11 && name_sum[i];i++) // Recorremos el array name_sum hasta encontrar (null) o hasta que recorra 11 bytes.
variable = ((variable >> 1) | ((variable & 0x01) << 7)) + name_sum[i];
estructura.variable = variable;
La operación es idéntica en ambos casos, la diferencia es intentar iterar operaciones directamente sobre una variable de estructura. No le sienta bien.
O utilizar una variable local para iterar y luego asignar el resultado a la de la estructura, así si funciona.
La pregunta es, ¿ Es normal ?. ¿ No se puede iterar directamente sobre una variable de una estructura?