Mehrfach Anweisung in Switch / Case



  • Hallo,

    gibt es die Möglichkeit mit Switch / Case mehrfach die gleiche Anweisung bei unterschiedlichen Switch Inhalten zu programmieren?

    Beispiel:

    Counter wird von einem IRQ zu bestimmten Zeiten incremiert und soll mit einer Switch / Case Anweisung ausgewertet werden.

    switch (Counter) {
    
    	case 1: case 1001:	// Bei 1 und 1001
    		// Anweisung 1 ...
    		break;
    	case 2: case 1002:	// Bei 2 und 1002
    		// Anweisung 2 ...
    		break;
    	case 3: case 1003:	// Bei 3 und 1003
    		// Anweisung 3 ...
    		break;
    	case 4: case 1004:	// Bei 4 und 1004
    		// Anweisung 4 ...
    		break;
    	case 5: 			// Bei 5 
    		// Anweisung 5 ...
    		break;
    	case 6:				// Bei 6
    		// Anweisung 6 ...
    		break;
    	case 7 "bis" 207: 	// Von 7 bis 207
    		// jedesmal Anweisung 7 wiederholen...
    		break;
    	case 208:			// Bei 208
    		// Anweisung 8 ...
    		break;
    }
    

    Hat jemand eine Lösung für das Problem?

    Gruß
    Jackson



  • ISO C hat so etwas nicht. GCC hat das jedoch als Erweiterung.

    Wenn dein Compiler das nicht implementiert, musst du dir etwas anderes einfallen lassen, z.B.:

    if (Counter >= 7 && Counter <= 207)
      Counter = 7;
    switch (Counter) {
    
        case 1: case 1001:  // Bei 1 und 1001
            // Anweisung 1 ...
            break;
        case 2: case 1002:  // Bei 2 und 1002
            // Anweisung 2 ...
            break;
        case 3: case 1003:  // Bei 3 und 1003
            // Anweisung 3 ...
            break;
        case 4: case 1004:  // Bei 4 und 1004
            // Anweisung 4 ...
            break;
        case 5:             // Bei 5
            // Anweisung 5 ...
            break;
        case 6:             // Bei 6
            // Anweisung 6 ...
            break;
        case 7:   // Von 7 bis 207
            // jedesmal Anweisung 7 wiederholen...
            break;
        case 208:           // Bei 208
            // Anweisung 8 ...
            break;
    }
    


  • Vielleicht hilft dir das :
    http://www.c-plusplus.net/forum/104696-full


Anmelden zum Antworten