我有两个版本的 C 函数,它们在速度和内存使用方面相互权衡。这些函数位于一个跨多个程序共享的 .cpp 文件中。我想使用一个函数指针,以便我可以在两个实现之间来回切换,并让这些更改贯穿我程序中的所有文件。
组合.h(提取)
long chooseRecursive (int n, int r);
long chooseLookup (int n, int r);
void foo (int n, int r);
static long (*choose)(int, int) = chooseRecursive;
组合.cpp(提取)
long chooseRecursive (int n, int r) { cerr << "Recursive\n"; }
long chooseLookup (int n, int r) { cerr << "Lookup\n"; }
void foo (int n, int r) { choose(n, r); }
Main.cpp(提取)
int main(int argc, char* argv []) {
choose = chooseLookup;
choose(10, 5);
foo(10, 5);
}
输出是:
Lookup
Recursive
为什么 foo 函数不使用chooseLookup 而不是chooseRecursive?我该如何解决?有没有更好的方法可以用来实现相同的目标?
预先感谢您的帮助!