2010-09-01 33 views

Respuesta

22
  1. Una enumeración es solo un valor, no un valor. No tiene dirección.
  2. Una enumeración solo puede ser una constante de tiempo de compilación, no una constante de tiempo de ejecución.
  3. Las enumeraciones no agregan ningún engrosamiento al archivo de objeto.
  4. Las compilaciones compilan más rápido y usan menos memoria en tiempo de compilación. Usualmente es insignificante, pero si estás haciendo una metaprogramación lo suficientemente complicada, puede comenzar a importar.

En general, para las cosas que son constantes en tiempo de compilación en tiempo de ejecución en lugar de constantes, no hay desventaja de usar una enumeración, y tiene las ventajas de hacer sus intenciones absolutamente claro y ser marginalmente más eficiente.

Editar: Otro caso de uso para enumeraciones puede ser una desambiguación para el compilador si una función debe evaluarse en tiempo de ejecución o en tiempo de compilación. Si el resultado de una función se asigna a una variable de pila immutable, la función se evaluará en tiempo de ejecución. Si utiliza un enum en el mismo ámbito, el resultado se evaluará en tiempo de compilación.

4

IIRC en D enum A = B; es más o menos lo mismo que #define A B está en C. Siempre está subcabado en literal en cualquier expresión que lo use.