Pregunta

Esta pregunta se ha hecho para la muerte, y yo estaría de acuerdo en que las enumeraciones son el camino a seguir. Sin embargo, tengo curiosidad en cuanto a cómo las enumeraciones se compilan en los #defines código- finales son sólo reemplazo de cadena, pero no enumeraciones añadir nada a los binario compilado? O son equivalentes tanto en esa etapa. Al escribir el firmware y la memoria es muy limitado, ¿hay alguna ventaja, por pequeña que sea, a la utilización de #defines?

Gracias!

EDIT:. Conforme a lo solicitado por el comentario más abajo, por embebido, me refiero a una cámara digital

Gracias por las respuestas! Estoy a favor de las enumeraciones!

¿Fue útil?

Solución

Ambos son expresiones constantes en la terminología de la norma, por lo que "debería" ser evaluados completamente en tiempo de compilación por cualquier compilador cuerdo. Se necesitaría un compilador maliciosamente patológica para generar código diferente.

Otros consejos

Un enum es sólo un número entero, en última instancia. El compilador propaga los valores, al igual que lo haría para un const.

Es imposible decir sin perfilar o medir de alguna otra manera.

Pero, cualquier compilador decente no mostró ninguna diferencia significativa. Además, siempre se debe preferir legible, typesafe código a través de un código eficiente, ilegibles, gotcha-montado. No comenzar a optimizar la eficiencia sobre la legibilidad hasta que haya demostrado dos cosas:

  1. que realmente necesita el impulso de la eficiencia
  2. la parte del programa que está cambiando ha demostrado ser un cuello de botella por un generador de perfiles.
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top