2010-05-14 26 views
9

He leído en alguna acerca de dar valores por defecto enumeraciones de este modo:/C dando enumeraciones valores por defecto C-Objetivo

typedef enum { 
MarketNavigationTypeNone = 0, 
MarketNavigationTypeHeirachy = 1, 
MarketNavigationTypeMarket = 2 
} MarketNavigationLevelType; 

.. pero no puedo recordar el valor de hacer esto. Si no les doy valores predeterminados, y luego alguien reordena la enumeración, ¿cuáles son los riesgos?

Si Yo siempre uso el nombre de enumeración y ni siquiera se refieren a ellos por su valor entero, ¿hay algún riesgo?

El único problema posible que puedo pensar es si estoy inicializando una enumeración de un valor int de un DB - y la enumeración se reordena - entonces la aplicación se romperá.

Respuesta

2

En general, esto sólo importa si la enumeración está expuesto a algún tipo de API externa o que va a ser utilizado para el intercambio de datos a través de los archivos de datos u otros medios. Si la enumeración solo se usa en su aplicación y en ningún otro lugar, los valores reales no importan.

7

que no son los valores por defecto, se les está dando los valores siempre van a tener.

Si no desea inicializar explícitamente, el primer valor de censistas es cero. Para todos los demás, si no hay inicializador, su valor es el valor del enumerador anterior aumentado en uno.

Hay dos razones para darles valores explícitos:

  • usted no desea que tengan los valores que tendrían de otra manera
  • desea que quede claro qué valor tienen (por usted u otros desarrolladores)

Si siempre se refiere a ellos por su nombre y nunca utiliza explícitamente un valor integral para comparación o asignación, no es necesario darles un valor explícito.

+0

"valores por defecto" - Sí, sé que son constantes - acabo de utilizar el término equivocado. Usted no ha mencionado el hecho de almacenar las enumeraciones fuera de la aplicación y luego Reinicializando ellos después? – bandejapaisa

+0

@ban: Eso les asignaría explícitamente algún valor integral si la interfaz externa no usa la enumeración con una definición equivalente. –