如何在C中创建一个!默认情况

Jer*_*emy 4 c microcontroller microchip pic switch-statement

在一个微控制器程序中,我有一些指令,除了默认情况,我想为交换机中的每个案例执行一些指令.但是,我不想为每个案例编写函数调用或使用宏.

因为这适用于以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;
}
Run Code Online (Sandbox Code Playgroud)

Jam*_*lis 5

int was_default_picked;

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

default:
    was_default_picked = 1;
}

if (!was_default_picked)
{
    // Your logic goes here
}
Run Code Online (Sandbox Code Playgroud)

  • 说实话,我不认为这个解决方案不够优雅.根据有多少个案例,可能最好只因为没有重复的代码 - 如果你添加一个新案例,你不能忘记更新!默认逻辑. (2认同)

R..*_*R.. 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 */
}
Run Code Online (Sandbox Code Playgroud)

  • 哈!我喜欢它. (2认同)