在运行时切换选择

时间:2015-01-06 05:48:51

标签: c++ c switch-statement

情况:有5个通道,它们被分配给5个传感器中的任何一个(可以更改运行时)。可以将传感器1和2分配给传感器1。 但是,无论分配如何,我想要的是,第二个开关中的所有传感器情况仅对完整的“For”循环周期执行一次。 我写了下面的代码,但它不起作用。谁能告诉解决方案?

for(uChannel = 0; uChannel < 5; uChannel++) {
    switch(uChannel)
    { 
      case 0: sensor= calibrate.channel1;
       break;
      case 1: sensor= calibrate.channel2;
       break;
      case 2: sensor= calibrate.channel3;
       break;
      case 3: sensor= calibrate.channel4;
       break;
      case 4: sensor= calibrate.channel5;
       break;
      default:
    }

    switch(sensor)
     {
       case 1:     function(a,b);
    break;
   case 2:     function(c,b);
    break;
   case 3:     function(d,b);
    break;
   case 4:     function(e,b);
    break;
   case 5:     function(f,b);
    break;
   default                   
     }

}

2 个答案:

答案 0 :(得分:1)

您可以编写第二个开关盒的功能,并从第一个开关的每个盒子调用它。例如:

void executeSensor(int sensor){
     switch(sensor)
     {
       case 1:     function(a,b);
       break;
       case 2:     function(c,b);
       break;
       case 3:     function(d,b);
       break;
       case 4:     function(e,b);
       break;
      case 5:     function(f,b);
       break;
      default:
      break;              
     }
}

以这种方式打电话:

for(uChannel = 0; uChannel < 5; uChannel++) {
 switch(uChannel)
 { 
   case 0: sensor= calibrate.channel1;
    executeSensor(sensor)
    break;
   case 1: sensor= calibrate.channel2;
    executeSensor(sensor)
    break;
   case 2: sensor= calibrate.channel3;
   executeSensor(sensor)
    break;
   case 3: sensor= calibrate.channel4;
   executeSensor(sensor)
    break;
   case 4: sensor= calibrate.channel5;
   executeSensor(sensor)
    break;
   default:
    break;
  }
}

答案 1 :(得分:0)

在上面的代码中有两个编译错误。

首先你应该解决这个问题。默认情况应以break语句和;

结束
for(uChannel = 0; uChannel < 5; uChannel++) {
    switch(uChannel)
    { 
      case 0: sensor= calibrate.channel1;
       break;
      case 1: sensor= calibrate.channel2;
       break;
      case 2: sensor= calibrate.channel3;
       break;
      case 3: sensor= calibrate.channel4;
       break;
      case 4: sensor= calibrate.channel5;
       break;
      default:
       break;
    }

    switch(sensor)
     {
       case 1:     function(a,b);
    break;
   case 2:     function(c,b);
    break;
   case 3:     function(d,b);
    break;
   case 4:     function(e,b);
    break;
   case 5:     function(f,b);
    break;
   default:
     break;              
     }

  }