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

178
Vistas
use una tabla en lugar de cambiar la caja en C

¿Cómo reemplazar la caja del interruptor por una mesa en este caso, por favor?

 typedef enum { DIV_1 = 1, DIV_2, DIV_4 = 4, DIV_8 = 8, DIV_16 = 16 } eDiv_t; eDiv_t Division; uint32_t dividerValue; switch (Division) { case DIV_1: dividerValue = RCC_DIV_1; break; case DIV_2: dividerValue = RCC_DIV_2; break; case DIV_4: dividerValue = RCC_DIV_4; break; case DIV_8: dividerValue = RCC_DIV_8; break; case DIV_16: dividerValue = RCC_DIV_16; break; default: dividerValue = RCC_DIV_1; break; }

No sé cómo afectar las variables de enumeración a una matriz y usarla en lugar de cambiar el caso

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

0

Puede definir su enumeración como valores enteros consecutivos e indexar su matriz con esta enumeración:

 typedef enum { DIV_1 = 0, DIV_2, DIV_4, DIV_8, DIV_16, NB_DIV } eDiv_t; unsigned int dividerValue[NB_DIV] = {RCC_DIV1, RCC_DIV2, ..., RCC_DIV16};
over 4 years ago · Santiago Trujillo Denunciar

0

En este caso específico donde eDiv_t no se puede cambiar porque se usa en otro lugar, se puede hacer una tabla de búsqueda como:

 RCC_t eDiv_to_RCC (eDiv_t ediv) { static const RCC_t lookup [16+1] = { [DIV_1] = RCC_DIV1, [DIV_2] = RCC_DIV2, [DIV_4] = RCC_DIV4, [DIV_8] = RCC_DIV8, [DIV_16] = RCC_DIV16, }; return lookup[ediv]; // returns 0 if invalid input }

Esto es muy rápido pero consume 17 * sizeof(RCC_t) que supongo es otra enumeración, probablemente de 8 a 32 bits de tamaño. No es tan grande, pero esta es una velocidad de ejecución superior a la optimización del tamaño de .rodata. Por otro lado, el código real ocupará mucho menos espacio que la versión Switch.

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