Foros del Web » Programación para mayores de 30 ;) » C/C++ »

problema con enumeracion (enum)

Estas en el tema de problema con enumeracion (enum) en el foro de C/C++ en Foros del Web. Hola, tengo un problemilla con las enumeraciones al cambiar el valor, a ver si me podeis ayudar. El error esta en la linea 62. no ...
  #1 (permalink)  
Antiguo 10/10/2010, 03:55
Avatar de Munire  
Fecha de Ingreso: julio-2010
Ubicación: en el ciberdespacio (España)
Mensajes: 150
Antigüedad: 13 años, 9 meses
Puntos: 4
problema con enumeracion (enum)

Hola, tengo un problemilla con las enumeraciones al cambiar el valor, a ver si me podeis ayudar. El error esta en la linea 62.

no se por que no me deja, ya que en la 17-18 lo cambio sin problemas.

gracias


Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void inicioPrograma();
  5. void menuPrograma();
  6. void crearFichero(char *nombreFichero);
  7. void leerFichero(char *nombreFichero);
  8. void escribirFichero(char *nombreFichero);
  9. void borrarFichero(char *nombreFichero);
  10.  
  11. typedef enum _estado{_inicioPrograma = 0, _menuPrograma = 1, _crearFichero = 2, _leerFichero = 3, _escribirFichero = 4, _borrarFichero = 5, _finPrograma = 6};
  12.  
  13.  
  14. int main()
  15. {
  16.     char nombreFichero[40];
  17.     enum _estado estado;
  18.     estado = _inicioPrograma;
  19.  
  20.     while(1){
  21.         switch(estado){
  22.         case _inicioPrograma:
  23.             {
  24.                 inicioPrograma();
  25.             }
  26.         case _menuPrograma:
  27.             {
  28.                 menuPrograma();
  29.             }
  30.         case _crearFichero:
  31.             {
  32.                 crearFichero(nombreFichero);
  33.             }
  34.         case _leerFichero:
  35.             {
  36.                 leerFichero(nombreFichero);
  37.             }
  38.         case _escribirFichero:
  39.             {
  40.                 escribirFichero(nombreFichero);
  41.             }
  42.         case _borrarFichero:
  43.             {
  44.                 borrarFichero(nombreFichero);
  45.             }
  46.         case _finPrograma:
  47.             {
  48.             }
  49.         }
  50.     }
  51.     system("pause");
  52.     return 0;
  53. }
  54.  
  55. //FUNCIONES
  56.  
  57.  
  58. void inicioPrograma()
  59. {
  60.     printf("Bienvenido. Pulse ENTER para continuar...");
  61.     getchar();
  62.     enum _estado estado = _menuPrograma;    //(62): error C2143: error de sintaxis :
  63. // falta ';' delante de 'tipo'
  64. }
  65.  
  66. void menuPrograma()
  67. {
  68.     printf("MENU:\n\n");
  69.     printf("1.- Crear nuevo fichero.\n");
  70.     printf("2.- Leer fichero\n");
  71.     printf("3.- Escribir en fichero\n");
  72.     printf("4.- Borrar fichero\n");
  73.     printf("5.- Salir");
  74. };
  75.  
  76. void crearFichero(char *nombreFichero){};
  77.  
  78. void leerFichero(char *nombreFichero){};
  79.  
  80. void escribirFichero(char *nombreFichero){};
  81.  
  82. void borrarFichero(char *nombreFichero){};
  #2 (permalink)  
Antiguo 11/10/2010, 17:36
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: problema con enumeracion (enum)

No es la enumeración sino que debes definir la variable al principio del bloque, recuerda a diferencia de C++ en C tienes que definir tus variables al principio del bloque de código de su ámbito.

Ejemplo:
Código C:
Ver original
  1. void inicioPrograma()
  2. {
  3.     enum _estado estado;
  4.  
  5.     printf("Bienvenido. Pulse ENTER para continuar...");
  6.     getchar();
  7.     estado = _menuPrograma;
  8. }
  #3 (permalink)  
Antiguo 13/10/2010, 01:31
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: problema con enumeracion (enum)

Una vez que has declarado

typedef enum _estado(....);

no necesitas utilizar enum para declarar variables de ese tipo, puedes declararlas directamente:

_estado MiVariable;
_estado OtraVariable = _menuPrograma;
  #4 (permalink)  
Antiguo 13/10/2010, 15:29
 
Fecha de Ingreso: febrero-2003
Ubicación: D.F.
Mensajes: 163
Antigüedad: 21 años, 2 meses
Puntos: 22
Respuesta: problema con enumeracion (enum)

Cita:
Iniciado por Fw190 Ver Mensaje
Una vez que has declarado

typedef enum _estado(....);

no necesitas utilizar enum para declarar variables de ese tipo, puedes declararlas directamente:

_estado MiVariable;
_estado OtraVariable = _menuPrograma;
Es correcto aunque el typedef está incompleto, hace falta el identificador.

typedef enum _estado{...} myEnum;

...

myEnum miVariable;
myEnum Otravariable = _menuPrograma;
  #5 (permalink)  
Antiguo 14/10/2010, 01:24
 
Fecha de Ingreso: junio-2010
Ubicación: Madrid
Mensajes: 620
Antigüedad: 13 años, 11 meses
Puntos: 73
Respuesta: problema con enumeracion (enum)

Cierto, olvido tonto por mi parte...

Etiquetas: enum
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:00.