使用函数指针时传递参数

时间:2018-04-19 17:31:58

标签: c function-pointers jump-table

我试图理解如何实现函数指针的二维表(以简化半复杂的开关/ case / if构造)。

以下工作 - 经过一些争吵 - 按照需要。

#include <stdio.h>

void AmpEn(void) {printf("AmpEn\n");}
void MovCurColumn1(void) {printf("MovCur\n");}
void AmpLevel(void) {printf("AmpLevel\n");}
void Phase(void) {printf("Phase\n");}

typedef void (*func_ptr)(void);

int main (void) {

    func_ptr table[2][2] = {{AmpEn, MovCurColumn1},{AmpLevel, Phase}};
    func_ptr *p;

    // runs all the fcns
    for (p = &table[0][0]; p < &table[0][0] + 4; p++) {
        (*p)();
    }

    // calls 0th fcn
    p = &table[0][0];
    (*p)(); p++;;
    (*p)();

    // calls 2nd fcn
    table[0][1]();

    return 0;
}

现在我想要的是将参数传递给函数 - 例如,将void Phase(void)更改为

void Phase(int mode)并通过一些类似的构造来调用它:

table[1][1](TRUE);

但我还没弄明白怎么做。欢迎任何帮助。

0 个答案:

没有答案
相关问题