2009-09-24 31 views
36

¿Es posible obtener el número total de elementos definidos por una enumeración en tiempo de ejecución?Obtener el número total de elementos enum

Si bien es casi la misma pregunta que this one, esa pregunta se relaciona con C#, y por lo que yo sé, el método provisto allí no funcionará en Objective-C.

Respuesta

69

Un enum es un tipo de C simple, por lo tanto, no proporciona información de tiempo de ejecución dinámica.

Una alternativa es utilizar el último elemento de una enumeración para indicar el conteo:

typedef enum { 
    Red, 
    Green, 
    Blue, 
    numColors 
} Color; 
+13

Bueno para valores contiguos, completamente falla por 'typedef enum {Rojo = 0xff0000, Verde = 0x00FF00, Azul = 0x0000FF, numColors} Color; '. –

+0

Como dijo Mark, esto no será un gran momento para su ejemplo, la alternativa provista por Darren es perfecta para mis necesidades. Gracias. –

+0

Además, esto es una mierda para el análisis de código estático. Etiquetas rojas –

Cuestiones relacionadas