例如:int n;
当n=0时调用程序段0;
当n=1时调用程序段1;
当n=2时调用程序段2;
.
.
.
当n=100时调用程序段100;我知道有三种方法可以实现这种调用:
方法1:使用if...else...语句;
方法2:使用switch语句;
方法3:将程序段设计成相同的函数形式,然后用函数指针数组调用;
但前两种方法效率太低,方法3虽然效率较高,但将程序段设计成函数本身就降低了效率。请问在VC++中有没有效率更高的方法?
当n=0时调用程序段0;
当n=1时调用程序段1;
当n=2时调用程序段2;
.
.
.
当n=100时调用程序段100;我知道有三种方法可以实现这种调用:
方法1:使用if...else...语句;
方法2:使用switch语句;
方法3:将程序段设计成相同的函数形式,然后用函数指针数组调用;
但前两种方法效率太低,方法3虽然效率较高,但将程序段设计成函数本身就降低了效率。请问在VC++中有没有效率更高的方法?
jmp word [n*2+offset] 处理的
所以一般都讲最好是 case 1 2 3...是排序的。
offset:
jmp 1
jmp 2
jmp 3
.....你自己要控制,要么汇编写,要么写成函数指针数组了。
“编译器一般在处理switch时就是用
jmp word [n*2+offset] 处理的”
那么当case 1 3 6...不连续时编译器如何处理?并且它不知道整数n是否连续?另外,VC++与汇编联合编程这个实例该怎样写,考虑到实用,大多数程序段可以用VC++。