Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 使用函数指针在函数实现之间切换_C++_C_Function Pointers - Fatal编程技术网

C++ 使用函数指针在函数实现之间切换

C++ 使用函数指针在函数实现之间切换,c++,c,function-pointers,C++,C,Function Pointers,我有两个版本的C函数,它们在速度和内存使用方面相互权衡。这些函数位于跨多个程序共享的.cpp文件中。我想使用一个函数指针,这样我就可以在两个实现之间来回切换,并使这些更改在我的程序中的所有文件中进行 组合h(摘录) composition.cpp(摘录) 输出为: Lookup Recursive 为什么foo函数不使用chooseLookup而不是chooseRecursive?我该如何解决这个问题?有没有更好的方法可以实现同样的目标 提前感谢您的帮助 目前情况下,包含组合.h的每个.cpp

我有两个版本的C函数,它们在速度和内存使用方面相互权衡。这些函数位于跨多个程序共享的.cpp文件中。我想使用一个函数指针,这样我就可以在两个实现之间来回切换,并使这些更改在我的程序中的所有文件中进行

组合h(摘录)

composition.cpp(摘录)

输出为:

Lookup
Recursive
为什么foo函数不使用chooseLookup而不是chooseRecursive?我该如何解决这个问题?有没有更好的方法可以实现同样的目标


提前感谢您的帮助

目前情况下,包含组合.h的每个.cpp文件都有自己的
静态
变量
选择
main
中的代码更新main.cpp的副本,但不更新Combination.cpp中的版本

解决此问题的一个简单方法是更改组合。h将
选择
声明为
extern

extern long (*choose)(int, int);
然后在composition.cpp中实现/初始化此功能

long (*choose)(int, int) = chooseRecursive;

目前,每个包含组合.h的.cpp文件都有自己的
static
variable
choose
main
中的代码更新main.cpp的副本,但不更新Combination.cpp中的版本

解决此问题的一个简单方法是更改组合。h将
选择
声明为
extern

extern long (*choose)(int, int);
然后在composition.cpp中实现/初始化此功能

long (*choose)(int, int) = chooseRecursive;

目前,每个包含组合.h的.cpp文件都有自己的
static
variable
choose
main
中的代码更新main.cpp的副本,但不更新Combination.cpp中的版本

解决此问题的一个简单方法是更改组合。h将
选择
声明为
extern

extern long (*choose)(int, int);
然后在composition.cpp中实现/初始化此功能

long (*choose)(int, int) = chooseRecursive;

目前,每个包含组合.h的.cpp文件都有自己的
static
variable
choose
main
中的代码更新main.cpp的副本,但不更新Combination.cpp中的版本

解决此问题的一个简单方法是更改组合。h将
选择
声明为
extern

extern long (*choose)(int, int);
然后在composition.cpp中实现/初始化此功能

long (*choose)(int, int) = chooseRecursive;

谢谢你,这正是我所怀疑的。有没有办法让
选择一个在任何地方共享的全局变量?@AndrewBaker我们的编辑必须重叠。我已经更新了我的答案,以涵盖改变
选择
成为全球谢谢-这就是我怀疑发生的事情。有没有办法让
选择一个在任何地方共享的全局变量?@AndrewBaker我们的编辑必须重叠。我已经更新了我的答案,以涵盖改变
选择
成为全球谢谢-这就是我怀疑发生的事情。有没有办法让
选择一个在任何地方共享的全局变量?@AndrewBaker我们的编辑必须重叠。我已经更新了我的答案,以涵盖改变
选择
成为全球谢谢-这就是我怀疑发生的事情。有没有办法让
选择一个在任何地方共享的全局变量?@AndrewBaker我们的编辑必须重叠。我已经更新了我的答案,以覆盖<代码> >选择< /C> >为C++的全局,您可能需要查看。它允许您使用成员函数和lambda表达式。对于C++,您可能需要查看。它允许您使用成员函数和lambda表达式。对于C++,您可能需要查看。它允许您使用成员函数和lambda表达式。对于C++,您可能需要查看。它还允许您使用成员函数和lambda表达式。