【问题标题】:Trying to call function using a void pointer inside a variable type尝试使用变量类型内的 void 指针调用函数
【发布时间】:2019-06-04 02:37:35
【问题描述】:

在我正在编写的固件中,我创建了一种变量。类似于以下内容:

    struct SitemMenu {
      unsigned int id;
      char * text;
      void * submenu
    }
    typedef struct SitemMenu TitemMenu;

任意函数:

    void functionX () {
      ...
    }

如果我创建这个变量:

    TitemMenu itemWhatever;

然后做:

    itemWhatever.submenu = &function (X);

我可以调用functionX吗:

    (*itemWhatever.submenu)();

我做了类似的事情,编译器给出了这个答案:

    error: (183) function or function pointer required

【问题讨论】:

    标签: c struct function-pointers pic xc8


    【解决方案1】:

    是的,你可以,但不是你写的那样。
    函数指针的声明方式与“普通”指针的声明方式不同。
    你需要的是:

    struct SitemMenu {
      unsigned int id;
      char * text;
      void (* submenu)(void); // this is a function pointer, as opposed to the 'normal' pointer above
    };
    
    typedef struct SitemMenu TitemMenu;
    TitemMenu itemWhatever;
    

    那么,如果你声明了一些具有相同参数和返回类型的函数,例如:
    void functionX(),那么你可以这样做:

    itemWhatever.submenu = functionX;
    itemWhatever.submenu();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-08
      • 1970-01-01
      • 2018-06-02
      相关资源
      最近更新 更多