例如:int n;
当n=0时调用程序段0;
当n=1时调用程序段1;
当n=2时调用程序段2;
    .
    .
    .
当n=100时调用程序段100;我知道有三种方法可以实现这种调用:
方法1:使用if...else...语句;
方法2:使用switch语句;
方法3:将程序段设计成相同的函数形式,然后用函数指针数组调用;
但前两种方法效率太低,方法3虽然效率较高,但将程序段设计成函数本身就降低了效率。请问在VC++中有没有效率更高的方法?

解决方案 »

  1.   

    其实编译器一般在处理switch时就是用 
      jmp word [n*2+offset] 处理的
    所以一般都讲最好是 case 1 2 3...是排序的。
     offset:
      jmp 1
      jmp 2
      jmp 3
      .....你自己要控制,要么汇编写,要么写成函数指针数组了。
      

  2.   

    switch语句的效率我没有试过,从资料上看到它的效率较低,如果
     “编译器一般在处理switch时就是用 
      jmp word [n*2+offset] 处理的”
    那么当case 1  3  6...不连续时编译器如何处理?并且它不知道整数n是否连续?另外,VC++与汇编联合编程这个实例该怎样写,考虑到实用,大多数程序段可以用VC++。