Initialisierung durch case-Marke übersprungen



  • switch (piece_on_square(from)) {
      case PIECE_PAWN:
    
        // pawns
    
        int rank;
    
        rank = square_to_rank(from);
    

    Obiges Codefragment ist funktionsfähig. Aber durch die kleine Änderung bekomme ich eine Fehlermeldung:

    Initialisierung von 'rank' durch case-Marke übersprungen.

    switch (piece_on_square(from)) {
      case PIECE_PAWN:
    
        // pawns
    
        int rank = square_to_rank(from);
    

    Was steckt dahinter?



  • Mach folgendes:

    //...
     case 1:
     { // <--
       int a;
       // ...
     } // <--
     break;
     case 2:
    

    Die case-Marken haben keinen eigenen Scope, das heißt die Variablen werden immer angelegt. Die Initialisierung kann aber nicht stattfinden, da die ja dem case zugeordnet ist. So grob mal formuliert. 😉
    Also einfach einen neuen Scope schaffen und fertig.


Anmelden zum Antworten