typedef enum
{
    HEARTS = 0, 
    SPADES, 
    DIAMONDS, 
    CLUBS
}Suits; //here HEARTS = 0, SPADES = 1, DIAMONDS = 2, and CLUBS = 3  

int main()
{
    Suits hand;
    play(hand);
    return 0;
}

void play(Suits hand)
{
    printf("Testing.\n");
}

Al compilar algo similar a esto, el compilador me da el error de: declaración implícita de la función ‘play’ y la advertencia: «el menú» puede ser utilizado sin inicializar en esta función. ¿Cómo puedo solucionar estos problemas?

  • stackoverflow.com/questions/1102542/…
  • Que no se resuelve mi problema. Voy a poner los mismos errores.
  • El error no tiene nada que ver con la enumeración, ver ring0 respuesta a continuación
  • Esto no tiene nada que ver con las enumeraciones, por favor google mensaje de error antes de lloriquear para ASÍ sobre él, y «menú» ni siquiera aparece en el código, así que no sabe muy bien lo que esperan de nosotros que hacer al respecto.
InformationsquelleAutor Bonnie | 2013-03-17

2 Comentarios

  1. 3

    Cuando el compilador se adapte a la llamada a jugar no sabe que la función, sin embargo, ya se declaró a continuación. Así la advertencia. Sólo hay que mover la declaración antes de principal

    typedef enum{HEARTS = 0, SPADES, DIAMONDS, CLUBS}Suits; //here HEARTS = 0, SPADES = 1, DIAMONDS = 2, and CLUBS = 3  
    
    void play(Suits hand)
    {
      printf("Testing.\n");
    }
    
    int main()
    {
      Suits hand;
      play(hand);
      return 0;
    }

    Para quitar la 2ª aviso, se declara

    Suits hand;

    pero mano no está inicializado aún, por lo tanto el compilador advierte de que el valor que proporciona a la función jugar no está inicializado.

    Acaba de establecer un valor para mano :

    Suits hand = SPADES;
  2. 0

    Como hemos declarado anteriormente, Suits define un tipo que sólo puede contener uno de los CORAZONES, PICAS, DIAMANTES y tréboles. Al declarar hand como un Suit tipo, puede tomar los valores definidos en la enumeración.

    Intentar definir hand como un tipo de tarjeta:

    hand = SPADES;

    a continuación, llame a jugar(de la mano).

    Pensar de manera similar a la declaración de una int.

    int x;

    x es de tipo entero y debe contener valores definidos por este tipo. Si se llama a una función

    someFunc (x);

    sin intializing x, obtendrá un comportamiento indefinido.

    EDITAR:
    También, poner la definición de su play función anterior main (después de la definición enum). O eso, o es necesario declarar su función por encima de main:

    void play(Suits hand);

    De lo contrario, main no saben lo que es «jugar» se refiere a que la definición que viene después.

Dejar respuesta

Please enter your comment!
Please enter your name here