4

マイクロコントローラ プログラムでは、デフォルト以外のスイッチのすべてのケースで実行したい命令がいくつかあります。ただし、関数呼び出しを作成したり、すべての場合にマクロを使用したりする必要はありません。

これは 3 ~ 7Mhz で動作するマイクロコントローラー用であるため、速度とコードスペースが重要です。例えば:

switch(letter)
{
case a:
    ShowApple();
    printf("You entered an english letter.");
    break;
case b:
    ShowBananna();
    printf("You entered an english letter.");
    break;
...
case z:
    ShowZebra();
    printf("You entered an english letter.");
    break;
default:
    printf("You did not enter an english letter. Silly human!");
    break;
}
4

4 に答える 4

5

これで地獄に落ちます…

switch (foo) {
default:
    /* code for default case */
    break;
    if (0) { case 'a':
        /* ... */
    } if (0) { case 'b':
        /* ... */
    } if (0) { case 'c':
        /* ... */
    }
    /* common code for non-default cases */
}
于 2012-01-20T17:53:27.527 に答える
5
int was_default_picked;

was_default_picked = 0;
switch (letter)
{
// ...

default:
    was_default_picked = 1;
}

if (!was_default_picked)
{
    // Your logic goes here
}
于 2012-01-20T17:37:53.817 に答える
2

それぞれのケースで本当に最後のステートメントである場合は、後で if ステートメントを使用して単純に実行できます。

int wasEnglish = 1;
switch(letter)
{
case a:
    ShowApple();
    break;
case b:
    ShowBananna();
    break;
...
case z:
    ShowZebra();
    break;
default:
    wasEnglish = 0;
    break;
}

if (wasEnglish)
{
    printf("You entered an english letter.");
}
else
{
    printf("You did not enter an english letter. Silly human!");
}
于 2012-01-20T17:38:13.007 に答える