【发布时间】:2014-10-27 02:56:59
【问题描述】:
我有一个很长的 while 循环代码。在这个 while 循环中,有一个很长的 switch-case 函数,以便知道应该在 bar 上应用哪个函数。
int i=0;
while(i<BigNumber)
{
switch(variable)
{
case 1:
foo1(bar);
case 2:
foo2(bar);
etc...
}
i = i+1;
}
但是,从一次迭代到另一次 while 循环,switch-case 结构中的情况总是相同的。因此,我认为在 while 循环之前定义一个独特的函数 foo 以应用于 bar 会更智能,但我可以对 foo 进行这个条件定义吗?类似的东西
switch(variable)
{
case 1:
define foo this way
case 2:
define foo that way
etc...
}
int i=0;
while(i<BigNumber)
{
foo(bar);
i = i+1;
}
但是不能在 main 中定义函数,所以这段代码编译失败。我该如何解决这个问题?有什么方法可以定义一个有条件的函数吗?最好的解决方案是否包括创建一个指向函数的指针数组,然后通过执行(*myarray[variable])(bar) 之类的操作在 while 循环中调用正确的函数?
【问题讨论】:
-
差别不大,但您可以只创建一个指向函数的变量,并在您的 while 循环之外的 switch 语句中分配它。无需创建指针数组。
标签: c function function-pointers