如何使用循环初始化指向函数的指针数组

幕后程序员

有没有一种方法可以将func1的所有地址都获取到func4,以便可以在for循环内使用它们来初始化菜单?我觉得这可以通过某种宏技巧来实现。我已经浏览过Google和SO,但没有找到任何帮助。

...
void func1(void) { printf("func1\n"); }
void func2(void) { printf("func2\n"); }
void func3(void) { printf("func3\n"); }
void func4(void) { printf("func4\n"); }

int main(int argc, char** argv)
    {
    int num=0;
    printf("Scanf: 0 - 4\n");
    scanf(" %d", &num);

    void (*menu[])(void) = {func1,
                            func2,
                            func3,
                            func4};

    if(num <= 4) (*menu[num-1])();
...
大卫·拉涅里(David Ranieri)

有没有办法获得func1到func4的所有地址

否,此类功能的地址可能位于不连续的区域

我觉得这可以通过某种宏技巧来实现。

您是否正在寻找一种立即声明和分配的方法?

在这种情况下:

#define PROTO(name) static void func##name(void) { printf("func"#name"\n"); }
#define EVENT(name) func##name,

#define EVENTS(EXEC) \
    EXEC(1) \
    EXEC(2) \
    EXEC(3) \
    EXEC(4)

EVENTS(PROTO)

int main(void)
{
    void (*menu[])(void) = {EVENTS(EVENT)};

    return 0;
}

输出:

static void func1(void) { printf("func""1""\n"); }
static void func2(void) { printf("func""2""\n"); }
static void func3(void) { printf("func""3""\n"); }
static void func4(void) { printf("func""4""\n"); }

int main(void)
{
    void (*menu[])(void) = {func1, func2, func3, func4,};

    return 0;
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何自动初始化指向函数的指针数组?

来自分类Dev

使用构造函数初始化指向已定义结构的指针数组

来自分类Dev

在编译时使用constexpr初始化指向成员函数的指针数组

来自分类Dev

如何初始化指向NULL的指针数组?

来自分类Dev

初始化指向对象数组的指针

来自分类Dev

初始化指向nullpointer的指针数组

来自分类Dev

初始化指向对象数组的指针

来自分类Dev

初始化指向数组C ++的指针

来自分类Dev

初始化指向数组的指针

来自分类Dev

如何使用函数初始化数组?

来自分类Dev

初始化指向同名函数的静态成员函数指针

来自分类Dev

用两个不同的构造函数初始化指向数组的指针

来自分类Dev

初始化指向受保护成员函数的指针

来自分类Dev

未初始化的指向函数的结构指针

来自分类Dev

指向类对象的空指针:函数内部的初始化

来自分类Dev

在C中初始化指向数组的指针

来自分类Dev

如何初始化保存指向结构体的指针的全局数组?

来自分类Dev

如何在C ++中初始化指向动态2D数组的指针

来自分类Dev

如何在一行代码中初始化指向整数数组的指针?

来自分类Dev

使用指向外部结构元素的指针进行静态数组初始化?

来自分类Dev

C++:使用指向大型静态数组的指针安全地初始化类

来自分类Dev

警告:从不兼容的指针类型初始化-如何初始化包含函数指针的结构体数组

来自分类Dev

初始化指向 struct 的指针的指针

来自分类Dev

初始化指向指针的指针向量

来自分类Dev

如何初始化指向nullptr的指针的并集?

来自分类Dev

使用指向extern变量的指针进行静态初始化

来自分类Dev

使用循环初始化常量数组?

来自分类Dev

结构初始化指向NULL的指针

来自分类Dev

指向双重初始化的指针

Related 相关文章

  1. 1

    如何自动初始化指向函数的指针数组?

  2. 2

    使用构造函数初始化指向已定义结构的指针数组

  3. 3

    在编译时使用constexpr初始化指向成员函数的指针数组

  4. 4

    如何初始化指向NULL的指针数组?

  5. 5

    初始化指向对象数组的指针

  6. 6

    初始化指向nullpointer的指针数组

  7. 7

    初始化指向对象数组的指针

  8. 8

    初始化指向数组C ++的指针

  9. 9

    初始化指向数组的指针

  10. 10

    如何使用函数初始化数组?

  11. 11

    初始化指向同名函数的静态成员函数指针

  12. 12

    用两个不同的构造函数初始化指向数组的指针

  13. 13

    初始化指向受保护成员函数的指针

  14. 14

    未初始化的指向函数的结构指针

  15. 15

    指向类对象的空指针:函数内部的初始化

  16. 16

    在C中初始化指向数组的指针

  17. 17

    如何初始化保存指向结构体的指针的全局数组?

  18. 18

    如何在C ++中初始化指向动态2D数组的指针

  19. 19

    如何在一行代码中初始化指向整数数组的指针?

  20. 20

    使用指向外部结构元素的指针进行静态数组初始化?

  21. 21

    C++:使用指向大型静态数组的指针安全地初始化类

  22. 22

    警告:从不兼容的指针类型初始化-如何初始化包含函数指针的结构体数组

  23. 23

    初始化指向 struct 的指针的指针

  24. 24

    初始化指向指针的指针向量

  25. 25

    如何初始化指向nullptr的指针的并集?

  26. 26

    使用指向extern变量的指针进行静态初始化

  27. 27

    使用循环初始化常量数组?

  28. 28

    结构初始化指向NULL的指针

  29. 29

    指向双重初始化的指针

热门标签

归档